5 c# sqlite log4net visual-studio-2008
有谁知道如何设置log4net以使用system.data.sqlite提供程序的一个很好的例子?
我最近一直在玩它,我以为我一切都在工作.它成功连接到数据库并"写出"它.但是,当我查看表数据时,它实际上从未提交日志.
Pie*_*eed 12
确保您设置了以下参考:
在Visual 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>
Run Code Online (Sandbox Code Playgroud)
请注意SQLite的参考.在这种情况下,您需要以下文本:System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139
这是承载ADO.net兼容的sql连接类的程序集的全名,这实际上是log4net依赖的类.
在Visual Studio中重新打开项目,确保您具有.config文件并在XML文本编辑器中打开它.将配置文件粘贴到此处比解释所有内容更容易.请注意,您将在此处使用程序集名称.
把它放在configSections XML节点中:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
Run Code Online (Sandbox Code Playgroud)
作为配置的直接XML子节点,放置此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>
Run Code Online (Sandbox Code Playgroud)
作为最后一步,您必须确保您指定的sqlite db文件预先存在于指定位置.一种方法是创建数据库并将其作为要复制到输出文件夹的资源附加.确保它与您指定的名称相同(在本例中log4net.db
)
我今天搜索同样的东西,发现http://sqlite.phxsoftware.com/forums/t/1667.aspx
这是一个成功使用 System.Data.SQLite ADO 提供程序(而不是官方 apache 文档中记录的另一个提供程序)的人提供的示例配置。
希望它能引导您走向正确的方向。