2017-01-17 32 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は、プロジェクトのbin \ Debugに保存されています。

アプリケーション:

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"); 
     } 
    } 
} 

コードをruningて後、私は "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

..エクスプローラのdbの画像はありません助けてください。 log4netデバッグ出力ファイルには何が入っていますか? – stuartd

答えて

0

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

のSQLiteまたはその依存関係の上には、あなたのbinディレクトリにありません。

関連する問題