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에서 데이터를 선택하는 데 사용하지만 난 아무것도 볼 수 없습니다. 내 코드는 어떻게됩니까?
내부 로깅을 사용하도록 설정 했으므로 'C : \ Windows \ Temp \ log4net.txt' 파일에 무엇이 있습니까? – stuartd
죄송합니다. image.https를 잊어 버리니 죄송합니다. //content.screencast.com/users/shinichikudo2003/folders/Default/media/fba59956-2c8b-43b2-b8d0-69fe61a5abd0/Untitled.png –
.. Explorer의 사진은 보이지 않습니다. 도와주세요. log4net 디버그 출력 파일에는 무엇이 있습니까? – stuartd