100求一个log4net+sqlite的winform例子
在codeproject上找了一个http://www.codeproject.com/Articles/403936/log4Net-and-SQLite
那个是log4net+sqlite的web例子,可是我移植到winform上面以后,一直不起作用。
创建SQLite的SQL语句如下:
CREATE TABLE Log (
LogId INTEGER PRIMARY KEY,
Date DATETIME NOT NULL,
Level VARCHAR(50) NOT NULL,
Logger VARCHAR(255) NOT NULL,
Source VARCHAR(255) NOT NULL,
Message TEXT DEFAULT NULL
);
增加的< appender>节点配置如下:
<appender name="AdoNetAppender_SQLite" type="log4net.Appender.AdoNetAppender">
<bufferSize value="100" />
<connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.66.0, Culture=neutral" />
<!--SQLite连接字符串-->
<connectionString value="Data Source=c:\\log4net.db;Version=3;" />
<commandText value="INSERT INTO Log (Date, Level, Logger,Source, Message) VALUES (@Date, @Level, @Logger, @Source, @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="@Source" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%file:%line" />
</layout>
</parameter>
<parameter>
<parameterName value="@Message" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
[解决办法]
LogId Integer NOT NULL PRIMARY KEY AUTOINCREMENT
[解决办法]
一般的, log4net 的 web 项目, 会在 AssemblyInfo.cs 内有个初始化调用,
以 AssemblyAttribute 形式给出的.
迁移到 winform 后, 需要你手工初始化.
就是 config 一个 appender.
[解决办法]
你的主键没有设置自增长,先把那个改过来再试
[解决办法]
1、写个Test,断点调试或日志输出,捕获写日志到数据库操作的异常,分析之
2、检查System.Data.Sqlite.dll对应是32bit还是64bit版本的
3、检查 c:\\log4net.db 是否有写权限
4、<connectionString value="Data Source=c:\\log4net.db;Version=3;" /> 是否有passwod