Learing log4net 2nd
配置log4net
这里使用web.config来展示配置方式,输出介质为文件,分别实现用户登录信息Log记录和程序错误Log记录配置。
在根节点configuration下插入以下配置信息:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/> </configSections> <log4net> <appender name="LoginLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="D:/Login"/><!--表示生成文件位置,这里设置为D盘下的名称为Login的文件--> <appendToFile value="true"/><!--设置自动添加到文件--> <rollingStyle value="Date" /><!--设置根据日期生成多文件--> <datePattern value="yyyyMM" /><!--表示文件是根据年月生成的,既每一个月的登陆信息会记录在不同的文件中--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d %m%n"/><!--记录信息的格式--> </layout> <filter type="log4net.Filter.LevelMatchFilter"><!--过滤器--> <param name="LevelToMatch" value="INFO"/><!--匹配INFO级别的记录--> </filter> <filter type="log4net.Filter.DenyAllFilter" /><!--这一个声明表示只匹配INFO级别--> </appender> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="D:/Log"/><!--表示生成文件位置,这里设置为D盘下的名称为Log的文件--> <appendToFile value="true"/><!--设置自动添加到文件--> <rollingStyle value="Size"/><!--设置根据日记文件大小生成多文件--> <maxSizeRollBackups value="-1" /><!--表示生成的文件的个数无上限--> <maximumFileSize value="100MB" /><!--表示生成的文件大小最大为100MB--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d 级别:%-5level 位置:%F 行号:%L - %m%n" /><!--记录信息的格式--> </layout> </appender> <appender name="ErrorAppdender" type="log4net.Appender.RollingFileAppender"> <file value="Log\Error"/><!--设置文件为根目录下的Log文件夹,名称开头为Error--> <staticLogFileName value="false" /><!--设置生成的文件名称为动态生成--> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMM.\tx\t"/><!--'t'需要加上反斜杠,才不会被转义--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%d] 级别:%-5level %n %m %n"/> </layout> </appender> <logger name="LoginLog"> <level value="INFO"/> <appender-ref ref="LoginLogFileAppender" /> </logger> <logger name="Log"> <level value="INFO"/> <appender-ref ref="LogFileAppender" /> </logger> <logger name="ErrorLog"> <level value="Error"/> <appender-ref ref="ErrorAppdender"/> </logger> </log4net>
配置信息解析
1. configSections:必须明确知道的一点就是web.config用来存储ASP.NET应用程序的配置信息,为了保证无冲突性,是不允许随意地在web.config中加入自定义节点。如果要实现自定义节点,就必须告诉web.config要用到什么节点,就像使用一个变量一样,在使用前总得进行初始化赋值,configSections节点就是起到这样的作用。name=“log4net”表示节点的名称为log4net,type=“log4net.Config.Log4NetConfigurationSectionHandler ”,type也是必选属性,同时要求类型必须实现IConfigurationSectionHandler接口,接口中有一个方法为object Create(object parent, object configContext, XmlNode section),可以通过调用System.Configuration.ConfigurationManager.GetSection(“log4net”)的方法访问Create接口的对象。Log4NetConfigurationSectionHandler的方法返回的是Create方法的参数section。
2. log4net下的appender:配置日记输出介质的节点。首先必须注意的一点是对appender节点起一个有意义的名字,既name属性,因为这将被之后的节点引用到。type属性表示关联的Appender类,这里两个appender都使用了log4net.Appender.RollingFileAppender,表示输出介质将是动态文件。
3. log4net下的logger:定义一个具体日记对象的设置,name属性是一个标识,可以通过调用代码LogManager.GetLogger(name属性标识)的方法返回一个Log。logger下的level表示设置可记录的日记等级,appender-ref表示要使用的appender,可以使用多个appender-ref。logger的使用让配置更加灵活,就从上面的例子来讲,LoginLog对应于一个专用的logger,Log对应于一个专用的logger。
日记级别
log4net定义了5种记录方法,如下图所示:

OFF是最高级别,既拒绝任何请求,ALL是最底级别,既允许任何请求。我们可以通过在配置文件中输入级别代号的方法操作允许日记级别,如配置文件中的name=“LoginLog”的logger,这里的LEVEL设置为INFO,表示支持INFO级别及其以上的日记级别,即支持FATAL,ERROR,WARN,INFO。
常用输出日记记录格式

我们可以选择使用缩写也可以使用全称。
%-数字一般通过组合使用,如上面的配置文件中:%-5level,表示level的预留字符串为5位,如果出现INFO这样不足5位的字符串,则末尾自动添加一个空格补足5位,这样做的主要原因是为了日记文件的可读性。

浙公网安备 33010602011771号