log4net是一个apache基金资助的项目log4j的.net移植版本,它是一个.net的dll,可以方便的加载到开发项目中,实现程序调试和运行的时候的日志信息输入,比.net自己提供的debug类和trace类要提供更多功能。
整个讨论分为两部分,第一部分是howto部分,告诉读者如何用最快的方式使log4net运作起来,第二步部分是inside部分,和读者一起探讨关于log4net层次架构设计以及一些思想.
HOWTO部分:
该部分给出一个范例,让你的第一个log4net范例尽快运行起来
先决条件:作者假设用户能够使用visual studio 2003的ide编写.net的winform程序,以及用户已经从网站上下载了一份最新的log4net(当前最新版本的下载地址:http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip)
第一步:新增项目,添加log4net引用.
通过vs.net 2003建立一个项目,然后将log4net添加到项目引用中来
第二步:设置配置文件:
建立对应项目的xml配置文件,log4net.config,文件内容如下:
第三步:在程序中设置自动加载以及监视配置文件
在AssemblyInfo.cs中增加如下语句:
第四步:测试使用
在窗体中增加一个按钮,
并在该按钮的Click事件中增加如下代码:
整个讨论分为两部分,第一部分是howto部分,告诉读者如何用最快的方式使log4net运作起来,第二步部分是inside部分,和读者一起探讨关于log4net层次架构设计以及一些思想.
HOWTO部分:
该部分给出一个范例,让你的第一个log4net范例尽快运行起来
先决条件:作者假设用户能够使用visual studio 2003的ide编写.net的winform程序,以及用户已经从网站上下载了一份最新的log4net(当前最新版本的下载地址:http://cvs.apache.org/dist/incubator/log4net/1.2.9/incubating-log4net-1.2.9-beta.zip)
第一步:新增项目,添加log4net引用.
通过vs.net 2003建立一个项目,然后将log4net添加到项目引用中来
第二步:设置配置文件:
建立对应项目的xml配置文件,log4net.config,文件内容如下:
1
<?xml version="1.0" encoding="utf-8" ?>
2
<configuration>
3
<configSections>
4
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
5
</configSections>
6
<log4net>
7
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
8
<layout type="log4net.Layout.PatternLayout">
9
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
10
</layout>
11
</appender>
12
<appender name="FileAppender" type="log4net.Appender.FileAppender">
13
<file value="c:/log-file.txt" />
14
<appendToFile value="true" />
15
<layout type="log4net.Layout.PatternLayout">
16
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
17
</layout>
18
</appender>
19
<root>
20
<level value="INFO" />
21
<appender-ref ref="ConsoleAppender" />
22
</root>
23
<logger name="test.logger">
24
<level value="ALL" />
25
<appender-ref ref="FileAppender" />
26
</logger>
27
</log4net>
28
</configuration>
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
在AssemblyInfo.cs中增加如下语句:
1
[assembly: log4net.Config.XmlConfigurator(Watch=true,ConfigFile="log4net.config")]
![](https://yorker.cnblogs.com/Images/OutliningIndicators/None.gif)
第四步:测试使用
在窗体中增加一个按钮,
并在该按钮的Click事件中增加如下代码:
private void trigLogger_Click(object sender, System.EventArgs e)
{
ILog log = LogManager.GetLogger("test.logger");
log.Info("Hello,World!");
}
{
ILog log = LogManager.GetLogger("test.logger");
log.Info("Hello,World!");
}
然后首先将log4net.config复制到bin\Debug目录下,并运行程序,点击"Trigger Logger"按钮,可以看到结果大概 如下
2006-01-19 16:25:54,890 [3476] INFO Test.logger [(null)] - Hello World