首页 > 代码库 > 日志组件log4net学习总结
日志组件log4net学习总结
记录的日志类别主要有FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)五种。
1.在配置文件中添加以下配置节,并在顶级节点<configuration>下增加<log4net>子节点。
<configSections>
<section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
2.在<log4net>节点下增加<appender>子节点,每个<appender>子节点代表一种记录日志的方式,但并不代表启用。
<appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="http://www.mamicode.com/ERROR" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<PreserveLogFileNameExtension value="http://www.mamicode.com/true" />
<!--日志文件名开头-->
<File value="http://www.mamicode.com/Logs/err.log" />
<!--是否追加到文件-->
<appendToFile value="http://www.mamicode.com/true" />
<!--混合使用日期和文件大小变换日志文件名-->
<rollingStyle value="http://www.mamicode.com/Composite" />
<!--日期的格式-->
<datePattern value="http://www.mamicode.com/yyyyMMddHHmm" />
<!--最大变换数量-->
<maxSizeRollBackups value="http://www.mamicode.com/1000" />
<!--最大文件大小-->
<maximumFileSize value="http://www.mamicode.com/10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="http://www.mamicode.com/%date %logger - %message%newline" />
</layout>
</appender>
其中ERROR是日志类别的一种,其余四种不再单独列出,配置类似。将日志分门别类,便于查找需要的文件及时排查错误原因。
3. 在<log4net>节点下增加<root>子节点,每个< root >子节点代表启用记录日志的方式。
<root>
<level value="http://www.mamicode.com/ALL" />
<appender-ref ref="errorAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="debugAppender" />
</root>
其中ALL表示全部启用,OFF表示全部禁用,其余表示启用相应的日志记录。
4. 在<log4net>节点下增加<logger>子节点,每个< logger >子节点代表某个模块启用记录日志的方式,可以避免日志过快增长,但会影响读写性能,可以结合实际情况适当选用。配置文件格式同<root>节点。
5.在web应用程序的全局配置文件的Application_Start事件中,添加如下代码:
XmlConfigurator.Configure();
在需要记录日志的地方调用如下代码:
ILog log = LogManager.GetLogger("Test");
log.Error("ERROR");
不同的日志类别调用不同的方法,可以把异常信息也传入到日志文件中以便于查找问题与排除故障。其中创建日志记录组建实例也可以使用下面的代码,将更加方便。
ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
相关参数简写附注:
%m:输出的日志消息
%n:换行
%d:输出当前语句运行的时刻
%r:输出程序从运行到执行到当前语句时消耗的毫秒数
%t:当前语句所在的线程ID
%p:日志的当前优先级别
%c:当前日志对象的名称
%l:输出语句所在的行号
%f:输出语句所在的文件名
%-数字—表示该项的最小长度,若不够则用空格填充
附详细配置文件具体说明,由于配置文件过长而将类似配置节部分省略,这些配置节不一定要同时使用甚至有些配置节是互斥的,应该根据实际情况适当选择配置节:
1 <configuration> 2 <configSections > 3 <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 4 </configSections> 5 <log4net> 6 <!-- 根日志对象--> 7 <root> 8 <!-- 默认为DEBUG,主要有ALL、FATAL、ERROR、WARN、INFO、DEBUG、OFF七种,可以不配置--> 9 <level value=http://www.mamicode.com/"DEBUG"/>10 <!-- 文件形式记录FATAL(致命错误)日志-->11 <appender-ref ref="fatalRollingFileAppender" />12 <!-- 文件形式记录ERROR(一般错误)日志-->13 <appender-ref ref="errorRollingFileAppender" />14 <!-- 文件形式记录WARN(警告)日志-->15 <appender-ref ref="warnRollingFileAppender" />16 <!-- 文件形式记录INFO(一般信息)日志-->17 <appender-ref ref="infoRollingFileAppender" />18 <!-- 文件形式记录DEBUG(调试信息)日志-->19 <appender-ref ref="debugRollingFileAppender" />20 <!-- 数据库形式记录FATAL(致命错误)日志(MSSQL)-->21 <appender-ref ref="fatalAdoNetAppender" />22 <!-- 数据库形式记录ERROR(一般错误)日志(MSSQL)-->23 <appender-ref ref="errorAdoNetAppender" />24 <!-- 数据库形式记录WARN(警告)日志(MSSQL)-->25 <appender-ref ref="warnAdoNetAppender" />26 <!-- 数据库形式记录INFO(一般信息)日志(MSSQL)-->27 <appender-ref ref="infoAdoNetAppender" />28 <!-- 数据库形式记录DEBUG(调试信息)日志(MSSQL)-->29 <appender-ref ref="debugAdoNetAppender" />30 </root>31 <!-- 子日志对象,可以不配置-->32 <logger name="Test" additivity="false">33 <level value=http://www.mamicode.com/"ALL"/>34 <!-- additivity默认值为true,表示继承根日志对象-->35 <appender-ref ref="AdoNetAppender" additivity="false"/>36 </logger>37 <!-- 定义输出到文件中-->38 <appender name="fatalRollingFileAppender" type="log4net.Appender.RollingFileAppender" >39 <!-- 旧日志文件自动重命名并生成新日志文件-->40 <preserveLogFileNameExtension value=http://www.mamicode.com/"true" />41 <!-- 日志的路径-->42 <file value=http://www.mamicode.com/"Logs\fatal.log"/>43 <!-- 是否覆盖,默认是追加true-->44 <appendToFile value=http://www.mamicode.com/"true"/>45 <!-- 混合使用日期和文件大小变换日志文件名,rollingStyle的值共有Once、Size、Date、Composite四种-->46 <rollingStyle value=http://www.mamicode.com/"Composite"/>47 <!-- 日期的格式-->48 <datePattern value=http://www.mamicode.com/"yyyyMMddHHmm" />49 <!-- 最大变换数量-->50 <maxSizeRollBackups value=http://www.mamicode.com/"1000"/>51 <!-- 最大文件大小-->52 <maximumFileSize value=http://www.mamicode.com/"100KB"/>53 <!-- 名称是否可以更改,false为可以更改-->54 <staticLogFileName value=http://www.mamicode.com/"true"/>55 <layout type="log4net.Layout.PatternLayout">56 <!-- 日志会话开始输出的文字-->57 <header value=http://www.mamicode.com/"开始"/>58 <!-- 日志会话输出的详细信息-->59 <conversionPattern value=http://www.mamicode.com/"%n记录时间:%d 线程ID:[%t] 日志级别:%-5p 出错类:%c property:[%property{NDC}] - 错误描述:%m%n"/>60 <!-- 日志会话结束输出的文字-->61 <footer value=http://www.mamicode.com/"结束"/>62 </layout>63 <!-- 过滤指定级别之间的日志-->64 <filter type="log4net.Filter.LevelRangeFilter">65 <levelMin value=http://www.mamicode.com/"DEBUG"/>66 <levelMax value=http://www.mamicode.com/"FATAL"/>67 </filter>68 <!-- 过滤指定级别的日志-->69 <filter type="log4net.Filter.LevelMatchFilter">70 <levelToMatch value=http://www.mamicode.com/"FATAL" />71 </filter>72 </appender>73 </log4net>74 </configuration>
日志组件log4net学习总结