使用Sqlite和log4net记录日志
我已经有一篇文章专门记录详细的说明了在winform上的使用log4net记录日志的配置和相关的代码及测试。
但是在实际应用过程当中经常需要记录日志到数据库当中。我这边就补充说明一下怎么使用Sqlite保存日志。
其实一旦实现了Sqlite其他的数据库的记录方式也就比较清晰了。
首先要在配置文件当中添加一个Appender
<appender name="dblog" type="log4net.Appender.AdoNetAppender"> <bufferSize value="2"/> <!-- 通过sqlite记录日志 --> <connectionType value="System.Data.SQLite.SQLiteConnection,System.Data.SQLite,Version=1.0.113.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139"/> <connectionString value="Data Source=log.db"/> <commandText value="INSERT INTO Log (Date, Level, Logger, Message, StackTrace) VALUES (@Date, @Level, @Logger, @Message, @StackTrace)"/> <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> <parameter> <parameterName value="@StackTrace"/> <dbType value="String"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%stacktrace"/> </layout> </parameter> </appender>
然后在root区域进行注册

一般网上找到的表里面没有StackTrace字段,这个是我再测试的时候自己添加的字段。
随便找个可以管理Sqlite的小工具,然后创建一个数据
在数据库当中创建一个表:
CREATE TABLE Log ( LogId INTEGER PRIMARY KEY, Date DATETIME NOT NULL, Level VARCHAR(50) NOT NULL, Logger VARCHAR(255) NOT NULL, Message TEXT DEFAULT NULL, StackTrace TEXT DEFAULT NULL );
最后把这个数据库文件(我这里就叫log.db)保存在程序目录当中,当然具体的目录可以在Appender当中的connectionString上自定义:

当中的 connectionType 当中需要把用到的包和类及相应的版本核对清楚。
然后在网上下载两个文件 System.Data.SQLite.dll和SQLite.Interop.dll
并且在程序当中引入System.Data.SQLite.dll。
SQLite.Interop.dll文件就比较迷惑了,我试着导入了几次都导入不了:

所以在使用时就把这个文件放在了程序包的位置:

完成以上步骤就可以实现了通过数据库记录日志。
具体的测试结果如下:


浙公网安备 33010602011771号