log4net(Log For Net)是Apache开源的应用于.Net框架的日志记录工具,详细信息参见Apache网站.它是针对Java的log4j(Log For Java的)姊妹工具.用过log4j的都知道,它功能强大,可配置性灵活,线程安全,对日志的输出管理和级别管理方便。具体的使用方法往下看。
首先你应该下载log4net.dll并引入到你的项目References中,或者把源代码项目作为你工程的一部分加入到你的工程当中。单击 这里下载Log4net 。
使用log4net需要知道其中两个比较重要的概念:logger 和 appender。前者是日志记录对象,后者是日志记录的目标,包括控制台,文件,定量大小的文件,远程广播。也就是说我们使用log4net的过程可以是这样的:获得一个用来记录日志的工具对象logger,然后为logger对象指定日志的记录位置.美妙的是,这一切工作都可以在Web.config配置文件中完成,所用的代码极少.
其配置如下:
先在web.config中的<configuration>节点下添加如下配置:
<
configSections
>
<
section
name
="log4net"
type
="log4net.Config.Log4NetConfigurationSectionHandler, log4net"
/>
</
configSections
>
用过web.config自定义节点的朋友都知道,还应该配置log4net节点,接下来在<configuration>节点下添加如下log4net节点配置:
using
log4net;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
public
partial
class
_Default : System.Web.UI.Page
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
protected void Page_Load(object sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
log4net.ILog logger = log4net.LogManager.GetLogger(this.GetType());
logger.Info("程序已经启动");
logger.Error("程序没有错误");
logger.Debug("程序开始调试");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}
在C:/下面会生成一个Applog.txt文本文件,打开看看,里面就有你写入的日志。
首先你应该下载log4net.dll并引入到你的项目References中,或者把源代码项目作为你工程的一部分加入到你的工程当中。单击 这里下载Log4net 。
使用log4net需要知道其中两个比较重要的概念:logger 和 appender。前者是日志记录对象,后者是日志记录的目标,包括控制台,文件,定量大小的文件,远程广播。也就是说我们使用log4net的过程可以是这样的:获得一个用来记录日志的工具对象logger,然后为logger对象指定日志的记录位置.美妙的是,这一切工作都可以在Web.config配置文件中完成,所用的代码极少.
其配置如下:
先在web.config中的<configuration>节点下添加如下配置:
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
用过web.config自定义节点的朋友都知道,还应该配置log4net节点,接下来在<configuration>节点下添加如下log4net节点配置:
1
<
log4net
debug
="false"
>
2
<
appender
name
="LogFileAppender"
type
="log4net.Appender.FileAppender"
>
3
<
param
name
="File"
value
="c:/Applog.txt"
/>
4
<
param
name
="datePattern"
value
="yyyy-MM-dd HH:mm"
/>
5
<
param
name
="AppendToFile"
value
="true"
/>
6
<
layout
type
="log4net.Layout.PatternLayout"
>
7
<
param
name
="ConversionPattern"
value
="%d [%t] %-5p %c [%x] - %m%n"
/>
8
</
layout
>
9
</
appender
>
10
<
appender
name
="HttpTraceAppender"
type
="log4net.Appender.ASPNetTraceAppender"
>
11
<
layout
type
="log4net.Layout.PatternLayout"
>
12
<
param
name
="ConversionPattern"
value
="%d [%t] %-5p %c [%x] - %m%n"
/>
13
</
layout
>
14
</
appender
>
15
<
appender
name
="EventLogAppender"
type
="log4net.Appender.EventLogAppender"
>
16
<
layout
type
="log4net.Layout.PatternLayout"
>
17
<
param
name
="ConversionPattern"
value
="%d [%t] %-5p %c [%x] - %m%n"
/>
18
</
layout
>
19
</
appender
>
20
<
appender
name
="RollingLogFileAppender"
type
="log4net.Appender.RollingFileAppender"
>
21
<
param
name
="File"
value
="C:/Log.txt"
/>
22
<
param
name
="AppendToFile"
value
="true"
/>
23
<
param
name
="MaxSizeRollBackups"
value
="10"
/>
24
<
param
name
="MaximumFileSize"
value
="5MB"
/>
25
<
param
name
="RollingStyle"
value
="Size"
/>
26
<
param
name
="StaticLogFileName"
value
="true"
/>
27
<
layout
type
="log4net.Layout.PatternLayout"
>
28
<
param
name
="ConversionPattern"
value
="%d [%t] %-5p %c [%x] - %m%n"
/>
29
</
layout
>
30
</
appender
>
31
<
root
>
32
<
level
value
="DEBUG"
/>
33
<
appender-ref
ref
="LogFileAppender"
/>
34
</
root
>
35
</
log4net
>
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
22
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
23
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
24
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
25
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
26
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
27
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
28
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
29
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
30
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
31
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
32
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
33
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
34
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
35
![](https://i-blog.csdnimg.cn/blog_migrate/ef0448fbf111e31d00818a2969986f10.gif)
从上面的配置中可以看到定义了多个appender,每一个appender就是一个日志记录的目标。root节点指定了选用哪一个 appender. 在这里我选用了LogFileAppender。
到这里配置就基本上完成了,但是怎么使用上面的配置呢?log4net为我们提供了在应用程序启动时加载配置信息的入口,很简单,在Global.asax.cs的Application_Start过程中添加如下代码:
log4net.Config.DOMConfigurator.Configure();
好了,到此为止整个配置过程完成了,下面是怎么调用的问题了。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)