2017-01-17 1 views
0

Log4net의 AdoNetAppender를 사용하여 Sqlite에 로그를 쓰려고하는데 작동하지 않습니다.AdoNetAppender Log4Net이 System.Data.SQLite를 사용하여 작동하지 않습니다.

의 app.config

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <bufferSize value="100" /> 
     <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.81.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> 
     <connectionString value="Data Source=|DataDirectory|\Log4net.db;Synchronous=Off;Pooling=true;FailIfMissing=false" /> 
     <commandText value="INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" /> 
     <CommandType value="Text" /> 
     <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="DEBUG" /> 
     <appender-ref ref="AdoNetAppender" /> 
     <!--<appender-ref ref="DebugAppender" />--> 
     </root> 
    </log4net> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true" /> 
    </appSettings> 
    <system.diagnostics> 
     <trace autoflush="true"> 
     <listeners> 
      <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Windows\Temp\log4net.txt" /> 
     </listeners> 
     </trace> 
    </system.diagnostics> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <system.data> 
     <DbProviderFactories> 
     <remove invariant="System.Data.SQLite.EF6" /> 
     <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> 
     </DbProviderFactories> 
    </system.data> 
</configuration> 

Log4net.db은 프로젝트의 빈 \ 디버그에 저장됩니다.

응용 프로그램 :

using log4net; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string path = Environment.CurrentDirectory; 
      AppDomain.CurrentDomain.SetData("DataDirectory", path); 
      log4net.Config.XmlConfigurator.Configure(); 
      ILog log = LogManager.GetLogger(typeof(Program).FullName); 
      log.Error("Hello"); 
     } 
    } 
} 

코드를들이받은 후, 나는 "SQLiteStudio는"Log4net.db에서 데이터를 선택하는 데 사용하지만 난 아무것도 볼 수 없습니다. 내 코드는 어떻게됩니까?

+0

내부 로깅을 사용하도록 설정 했으므로 'C : \ Windows \ Temp \ log4net.txt' 파일에 무엇이 있습니까? – stuartd

+0

죄송합니다. image.https를 잊어 버리니 죄송합니다. //content.screencast.com/users/shinichikudo2003/folders/Default/media/fba59956-2c8b-43b2-b8d0-69fe61a5abd0/Untitled.png –

+0

.. Explorer의 사진은 보이지 않습니다. 도와주세요. log4net 디버그 출력 파일에는 무엇이 있습니까? – stuartd

답변

0

당신은 다음과 같은 연결 문자열을 사용하여 데이터베이스에 대한 연결 만들려고 :

 <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.81.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> 

SQLite의 또는 해당 종속성 중에 당신의 bin 디렉토리에 있지 않습니다.

관련 문제