《Log4Net培训.doc》由会员分享,可在线阅读,更多相关《Log4Net培训.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年-2023年建筑工程管理行业文档 齐鲁斌创作Log4Net培训文档目录一.概述1二.Log4Net系统11程序结构1ILogger1IIAppender2IIILayout5IVFilter62日志级别6三.Log4Net的使用方法71编写配置信息72配置初始化73获得记录器74使用记录器进行记录7四.扩展Log4Net81对FileAppender和RollingLogFileAppender81对RollingLogFileAppender82对SmtpAppender8五.实例演示8一. 概述Log4Net是一开源软件。本文档对log4net的使用进行描述。二. Log4Net
2、系统1 程序结构我们在使用Log4Net的时候,主要关注如下几个部分: I Logger日志记录器,我们在程序里使用这个管理器来进行日志记录操作。在一份程序里可以有多个logger,每个logger都可以在配置文件控制,通过程序调用。比如在配置文件里配置: 则在程序里,我们可以这样获得这个记录器:private static log4net.ILog log = log4net.LogManager.GetLogger(MailLogger);得到记录器之后,我们可以通过如下方法记录日志。log.Error(message, e)log.Error(message)log.Debug(mess
3、age, e)log.Debug(message)log.Warn(message, e)log.Warn(message)log.Fatal(message, e)log.Fatal(message)log.Info(message, e)log.Info(message) II Appender日志记录设备,指我们希望把日志记录到数据库/文件,或者发邮件等,每种方式都有一个独立的Appender实现。Appender通常都在配置文件里进行控制,对于我们来说,在程序里不显式使用,它由logger调用。如在配置文件里定义: 当我们进行了这样的定义之后,只是说明了我们有了这个Appender,会
4、不会使用这个Appender,则由logger配置节控制。要使用这个Appender,在looger里设置: 则这个Appender会在写日志的时候调用。多个Appender可以同时被一个logger使用,即一份日志可以保存到多个设备上。定义一个appender,需要指定属性及参数,如下介绍常用的RollingLogFileAppender和SmtpAppender的定义。Appender属性:属性名描述name必选项,可随意起名字,被logger配置引用type必选项,必须是Appender已定义类型,如log4net.Appender.RollingFileAppenderRollingL
5、ogFileAppender(文件记录)参数:参数名描述filter可以有0或多个filter,具体配置在下面的Filter项说明。 layout可以有0或者说1个layout,当没有layout时,没有输出。具体配置在下面的layout项说明paramParam有多个可以进行配置,常用的:名称描述File文件路径,如果RollingStyle为Composite或Date,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名。已经扩展支持虚拟目录RollingStyle创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件
6、),Composite(按日期及文件大小),默认为CompositeDatePattern当RollingStyle为Composite或Date,这里设置文件名格式StaticLogFileNameTrue/false,默认为true。为true时,RollingStyler的date值将无效。且为true时,需要在file里指定文件名,所有日志都会记录在这个文件里。MaximumFileSize当RollingStyle为Composite或Size,这里设置最大文件大小(可以KB,MB,GB为单位,默认为字节)CountDirection默认值为-1。当文件超过MaximumFileSi
7、ze的大小时,如果要创建新的文件来存储日志,会根据CountDirection的值来重命名文件。大于-1的值时,file里指定的文件名会依次加上.0,.1,.2递增。当等于或小于-1时,创建依赖于MaxSizeRollBackups参数值,创建备份日志数。MaxSizeRollBackups备份日志数目,默认为0。在CountDirection为负数时有效。Threshold起始日志级别,取值为下面文章讨论的预定义日志级别。低于此级别的日志不会被记录。AppendToFileTrue/false,默认为true。当文件存在时,是否在原文件上追加内容。例如: SmtpAppender(邮件通知)
8、 参数:参数名描述filter可以有0或多个filter,具体配置在下面的Filter项说明。 layout可以有0或者说1个layout,当没有layout时,没有输出。具体配置在下面的layout项说明paramParam有多个可以进行配置,常用的:名称描述authentication默认为none,可选basic和NtlmsmtpHostusernamepasswordfrom发送人邮件地址to接收人邮件地址subject邮件主题Priority邮件优先级。默认为Normal,可设置为HighbufferSize日志缓冲器大小,默认值为512。当设置为小于2的值时,等于没有缓冲器。一旦日
9、志数量达到缓冲器大小时,程序会把日志全部发出去。evaluator估算器,当估算器里的条件成立时,会马上把缓冲器里的日志发送出去。语法如下: Log4net只预定义了一个Level估算器,我们可以改变threshold的等级起始值。意思为:当级别在debug或以上时,会立即把日志内容发送邮件。lossyTrue/false,默认为false。触发事件是否会有可能丢失,取决于这个值。当为true时,必须指定evaluator,以便有“可能丢失的触发事件”。比如这个值为true时,当缓冲到达,同时有符合evaluator的触发条件时,会把触发事件丢弃。例如: III Layout日志布局设计器,指
10、我们希望输出哪些数据,这些数据又以什么样的格式输出。Layout通常都在配置文件里进行控制,对于我们来说,在程序里不显式使用,它由Appender调用。并且在Appender配置节里进行定义。 每个appender对应一个layout。常用的layout:PatternLayout属性:属性名描述type必选项,必须是已定义类型,如log4net.Layout.PatternLayout 参数:属性名描述Footer日志的底部文字,自定义的字符串Header日志的头部文字,自定义的字符串ConversionPattern转换格式。所有数据都在这里输出。转换格式由三部分组成: 自定义字符串+%修
11、饰符+数据变量+自定义字符串数据变量:Conversion Pattern NameEffectAppdomain(a)Used to output the friendly name of the AppDomain where the logging event was generated. Date(d)%dateHH:mm:ss,fff or %datedd MMM yyyy HH:mm:ss,fff. exception异常 Level(p)当前级别 Logger(c)当前logger名称 Message(m)记录的信息 Newline(n)新行Timestamp(r)应用程序工作时
12、间Thread(t)线程名称或线程号码. utcdate%utcdateHH:mm:ss,fff or %utcdatedd MMM yyyy HH:mm:ss,fff. %The sequence % outputs a single percent sign. 修饰符:Format modifiercomment%20logger小于20字符时左填充%-20logger小于20字符时右填充. %.30logger大于30时截取%20.30logger小于20字符时左填充. 大于30时截取%-20.30logger小于20字符时右填充. 大于30时截取 IV Filter日志过滤器。除了级别
13、限制之外,我们还可以添加过滤器,以指示该日志是否需要记录。Filter通常都在配置文件里进行控制,对于我们来说,在程序里不显式使用,它由Appender调用。 一个appender可以有多个filter,按在配置文件里出现的次序进行检查。常用的有:LevelRangeFilterStringMatchFilter2 日志级别日志的级别可以在多个地方定义,appender参数里的Threshold属性定义的level,logger的level,root节点里的level,如果这三个地方均没有定义,则默认”Debug”级别。当这几个地方有两个以上定义了level,则按下表的优先级,取最高优先级的l
14、evel。此外,级别还受appender里定义的filter里的level范围限制。各个级别的优先级如下:级别代码级别描述优先级OFF关闭最高FATAL严重ERROR错误INFO信息DEBUG调试ALL全部最低三. Log4Net的使用方法1 编写配置信息Log4net的行为控制大多都可以在配置文件里完成,因此,编写配置信息是使用Log4net的必要步骤,同时也是最大的难点。配置文件可以在web.config里,也可以放在独立的文件中。2 配置初始化可在global程序启动事件里进行初始化。 void Application_Start(object sender, EventArgs e)
15、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 使
16、用记录器进行记录log.Error(message, e);四. 扩展Log4Net1 对FileAppender和RollingLogFileAppender可在File配置节里用#开头,头一个下斜杠之前的字符表示虚拟目录路径如,则up表示虚拟目录注:如虚拟目录不存在,则视为站点根目录下的文件夹2 对RollingLogFileAppender可在DatePattern配置节里设置#Disk_HostName,用以替换本地机器名称如:3 对SmtpAppender可在subject配置节里设置#Disk_HostName,用以替换本地机器名称如:五. 实例演示示例源代码:参考资料:1, Log4net源代码2, Log4net SDK3, Log4net Manual4, Log4net 文章(