首页 > 代码库 > 日志组件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学习总结