2008-12-19 2 views
5

Кто-нибудь знает хороший пример того, как настроить log4net для использования поставщика system.data.sqlite?log4net и system.data.sqlite

Я играл с ним в последнее время, и я думал, что все это работает. Он успешно соединяется с базой данных и «записывает» ее. Однако, когда я смотрю на данные таблицы, он никогда не записывает журнал.

ответ

0

Я искал, что то же самое сегодня и нашел http://sqlite.phxsoftware.com/forums/t/1667.aspx

Это пример конфигурация, от кого-то, кому удалось успешно использовать поставщик System.Data.SQLite ADO (вместо другой, описанных в официальном апаче документы).

Надеюсь, он приведет вас в правильном направлении.

11

Убедитесь, что следующие ссылки установить:

  • log4net (очевидно)
  • System.Data.SQLite (вы можете забыть об этом один)

Закройте проект в Визуальная Studio и снова запустите .csproject (или эквивалент для VB) в текстовом редакторе и найдите раздел ссылок. Шахта выглядит так:

<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\externals\log4net-1.2.10\bin\net\2.0\release\log4net.dll</HintPath> 
</Reference> 
<Reference Include="System" /> 
<Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\externals\sqlite.net\System.Data.SQLite.dll</HintPath> 
</Reference> 

Обратите внимание на ссылку для SQLite. В этом случае вам понадобится этот текст: System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139 Это полное имя сборки, на которой размещаются классы соединения SQL, совместимые с ADO.net, на самом деле это зависит от того, с чем связана log4net.

Повторно запустите проект в Visual Studio, убедитесь, что у вас есть файл .config и откройте его в текстовом редакторе XML. Здесь будет проще вставить мой конфигурационный файл, а не объяснять все. Обратите внимание, что здесь вы собираетесь использовать имя сборки.

Put это в узле configSections XML:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 

Как прямой XML childnode конфигурации, поместить этот раздел XML:

<log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="sqlite" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 
     <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> 
     <connectionString value="Data Source=log4net.db;Version=3;" /> 
     <commandText value="INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" /> 
     <parameter> 
      <parameterName value="@Date" /> 
      <dbType value="DateTime" /> 
      <layout type="log4net.Layout.RawTimeStampLayout" /> 
     </parameter> 
     <parameter> 
      <parameterName value="@Level" /> 
      <dbType value="String" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%level" /> 
      </layout> 
     </parameter> 
     <parameter> 
      <parameterName value="@Logger" /> 
      <dbType value="String" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%logger" /> 
      </layout> 
     </parameter> 
     <parameter> 
      <parameterName value="@Message" /> 
      <dbType value="String" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%message" /> 
      </layout> 
     </parameter> 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="ConsoleAppender" /> 
     <appender-ref ref="sqlite" /> 
    </root> 
</log4net> 

В качестве последнего шага вы должны убедиться, что sqlite db-файл, который вы указали заранее в указанном месте. Один из способов сделать это - создать базу данных и прикрепить ее как ресурс, который нужно скопировать в выходную папку. Убедитесь, что оно имеет то же имя, что и вы указали (в этом случае log4net.db)

+0

Спасибо за действительно полезный ответ. Я не мог понять connectionType и не думал, чтобы посмотреть в .csproj файл. Это полностью сработало для меня! +1 – Dave

Смежные вопросы