Log4Net培训
Log4Net培训文档
目录
一. 概述 (1)
二. Log4Net系统 (1)
1 程序结构 (1)
I Logger (1)
II Appender (2)
III Layout (5)
IV Filter (6)
2 日志级别 (6)
三. Log4Net的使用方法 (7)
1 编写配置信息 (7)
2 配置初始化 (7)
3 获得记录器 (7)
4 使用记录器进行记录 (7)
四. 扩展Log4Net (8)
1 对FileAppender和RollingLogFileAppender (8)
1 对RollingLogFileAppender (8)
2 对SmtpAppender (8)
五. 实例演示 (8)
一.概述
Log4Net是一开源软件。本文档对log4net的使用进行描述。
二.L og4Net系统
1程序结构
我们在使用Log4Net的时候,主要关注如下几个部分:
I Logger
日志记录器,我们在程序里使用这个管理器来进行日志记录操作。
在一份程序里可以有多个logger,每个logger都可以在配置文件控制,通过程序调用。
比如在配置文件里配置:
则在程序里,我们可以这样获得这个记录器:
private static log4net.ILog log = log4net.LogManager.GetLogger("MailLogger");
得到记录器之后,我们可以通过如下方法记录日志。
II Appender
日志记录设备,指我们希望把日志记录到数据库/文件,或者发邮件等,每种方式都有一个独立的Appender实现。
Appender通常都在配置文件里进行控制,对于我们来说,在程序里不显式使用,它由logger调用。
如在配置文件里定义:
当我们进行了这样的定义之后,只是说明了我们有了这个Appender,会不会使用这个Appender,则由logger配置节控制。
要使用这个Appender,在looger里设置:
则这个Appender会在写日志的时候调用。
多个Appender可以同时被一个logger使用,即一份日志可以保存到多个设备上。
定义一个appender,需要指定属性及参数,如下介绍常用的RollingLogFileAppender和SmtpAppender的定义。
RollingLogFileAppender(文件记录)参数:
SmtpAppender(邮件通知)
III Layout
日志布局设计器,指我们希望输出哪些数据,这些数据又以什么样的格式输出。Layout通常都在配置文件里进行控制,对于我们来说,在程序里不显式使用,它由Appender 调用。并且在Appender配置节里进行定义。
每个appender对应一个layout。常用的layout:
PatternLayout
IV Filter
日志过滤器。除了级别限制之外,我们还可以添加过滤器,以指示该日志是否需要记录。Filter通常都在配置文件里进行控制,对于我们来说,在程序里不显式使用,它由Appender 调用。
一个appender可以有多个filter,按在配置文件里出现的次序进行检查。常用的有:LevelRangeFilter
StringMatchFilter
2日志级别
日志的级别可以在多个地方定义,appender参数里的Threshold属性定义的level,logger 的level,root节点里的level,如果这三个地方均没有定义,则默认”Debug”级别。当这几个
地方有两个以上定义了level,则按下表的优先级,取最高优先级的level。此外,级别还受appender里定义的filter里的level范围限制。
各个级别的优先级如下:
三.L og4Net的使用方法
1编写配置信息
Log4net的行为控制大多都可以在配置文件里完成,因此,编写配置信息是使用Log4net 的必要步骤,同时也是最大的难点。
配置文件可以在web.config里,也可以放在独立的文件中。
2配置初始化
可在global程序启动事件里进行初始化。
void Application_Start(object sender, EventArgs e)
{
System.IO.FileInfo fileInfo = new
System.IO.FileInfo(Server.MapPath("/SystemConfig/log4netConfig.xml"));
//log4net.Config. XmlConfigurator.Configure(fileInfo);
log4net.Config.XmlConfigurator.ConfigureAndWatch(fileInfo);
}
3获得记录器
private static log4net.ILog log = log4net.LogManager.GetLogger("MailLogger");
4使用记录器进行记录
log.Error(message, e);
四.扩展Log4Net
1对FileAppender和RollingLogFileAppender
可在File配置节里用#开头,头一个下斜杠之前的字符表示虚拟目录路径
如,则up表示虚拟目录
注:如虚拟目录不存在,则视为站点根目录下的文件夹
2对RollingLogFileAppender
可在DatePattern配置节里设置#{Disk_HostName},用以替换本地机器名称
如:
3对SmtpAppender
可在subject配置节里设置#{Disk_HostName},用以替换本地机器名称
如:
五.实例演示
示例源代码:
参考资料:
1,Log4net源代码
2,Log4net SDK
3,Log4net Manual
4,Log4net 文章(https://www.360docs.net/doc/f216142798.html,/archive/2006/06/02/415824.html)