需求:基于log4net组建,创建Console程序将日志输出到Access数据库。
具体实施:
(1)创建控制台程序。
(2)控制台程序中,添加一个纯文本文件,文件命名为“log-Access.set”
log-Assess.set文件的内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<log4net xmlns="urn:log4net">
<root xmlns="">
<level value="ALL" />
<appender-ref ref="AdoNetAppender_Access" />
</root>
<appender xmlns="" name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
<connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\my\Desktop\02\log4net\bin\log\log4net.mdb " />
<commandText value="INSERT INTO LogDetails([LogDate],[Thread],[logLevel],[Logger],[Message]) VALUES(@logDate, @thread, @logLevel,@logger,@message)" />
<!--BufferSize为缓冲区大小,只有日志记录超10条才会一块写入到数据库-->
<bufferSize value="10"/>
<!--定义各个参数-->
<parameter>
<parameterName value="@logDate" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date" />
</layout>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@logLevel" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="240" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
</log4net>
注意:(1)文件属性设置为:如果较新则复制
(2)connectionString设置里面的文件路径。绝对路径
(3)在AssemblyInfo.cs文件里添加
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log-Access.set", Watch = true)]
(4)在ConnectionString里面对应的路径中,创建log4net.mdb数据库,并创建表
CREATE TABLE [LogDetails] (
ID AutoIncrement,
[logDate] longText,
[Thread] longText,
[logLevel] longText,
[Logger] longText,
[Message] longText,
Primary Key (ID)
)
(5)添加代码
static void Main(string[] args)
{
ILog log = log4net.LogManager.GetLogger(typeof(Program));
Random random = new Random();
for (int i = 0; i < 2; i++)
{
//记录错误日志
if (log.IsErrorEnabled)
log.Debug("你引起了一个错误,错误ID为:" + random.Next().ToString());
//记录严重错误
if (log.IsFatalEnabled)
log.Fatal("你引发了一个总结者错误,可能导致系统终止,ID为:" + random.Next().ToString());
//记录一般信息
if (log.IsInfoEnabled)
log.Info("你计划记录一个信息,id为:" + random.Next().ToString());
//记录调试信息
if (log.IsDebugEnabled)
log.Debug("调试信息,调试ID为:" + random.Next().ToString());
//记录警告信息
if (log.IsWarnEnabled)
{
log.Warn("警告:警告ID为:" + random.Next().ToString());
}
}
}
注意:在64位的Windows7系统调试时,如果office是32位将你的应用程序将原有的AnyCPU更改为CPU x86.
如果是64位,安装64位的Jet40驱动。可以到http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d 下载
否则会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
其它数据库,基本和Access类似,只是在连接字符串和,插入部分有所不同。