日志组件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="ERROR" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<PreserveLogFileNameExtension value="true" />
<!--日志文件名开头-->
<File value="\Logs\err.log" />
<!--是否追加到文件-->
<appendToFile value="true" />
<!--混合使用日期和文件大小变换日志文件名-->
<rollingStyle value="Composite" />
<!--日期的格式-->
<datePattern value="yyyyMMddHHmm" />
<!--最大变换数量-->
<maxSizeRollBackups value="1000" />
<!--最大文件大小-->
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %logger - %message%newline" />
</layout>
</appender>
其中ERROR是日志类别的一种,其余四种不再单独列出,配置类似。将日志分门别类,便于查找需要的文件及时排查错误原因。
3. 在<log4net>节点下增加<root>子节点,每个< root >子节点代表启用记录日志的方式。
<root>
<level value="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="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="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="true" /> 41 <!-- 日志的路径--> 42 <file value="Logs\fatal.log"/> 43 <!-- 是否覆盖,默认是追加true--> 44 <appendToFile value="true"/> 45 <!-- 混合使用日期和文件大小变换日志文件名,rollingStyle的值共有Once、Size、Date、Composite四种--> 46 <rollingStyle value="Composite"/> 47 <!-- 日期的格式--> 48 <datePattern value="yyyyMMddHHmm" /> 49 <!-- 最大变换数量--> 50 <maxSizeRollBackups value="1000"/> 51 <!-- 最大文件大小--> 52 <maximumFileSize value="100KB"/> 53 <!-- 名称是否可以更改,false为可以更改--> 54 <staticLogFileName value="true"/> 55 <layout type="log4net.Layout.PatternLayout"> 56 <!-- 日志会话开始输出的文字--> 57 <header value="开始"/> 58 <!-- 日志会话输出的详细信息--> 59 <conversionPattern value="%n记录时间:%d 线程ID:[%t] 日志级别:%-5p 出错类:%c property:[%property{NDC}] - 错误描述:%m%n"/> 60 <!-- 日志会话结束输出的文字--> 61 <footer value="结束"/> 62 </layout> 63 <!-- 过滤指定级别之间的日志--> 64 <filter type="log4net.Filter.LevelRangeFilter"> 65 <levelMin value="DEBUG"/> 66 <levelMax value="FATAL"/> 67 </filter> 68 <!-- 过滤指定级别的日志--> 69 <filter type="log4net.Filter.LevelMatchFilter"> 70 <levelToMatch value="FATAL" /> 71 </filter> 72 </appender> 73 </log4net> 74 </configuration>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。