日志组件log4net学习总结

时间:2022-04-22 11:17:36

记录的日志类别主要有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:输出语句所在的文件名

%-数字—表示该项的最小长度,若不够则用空格填充

附详细配置文件具体说明,由于配置文件过长而将类似配置节部分省略,这些配置节不一定要同时使用甚至有些配置节是互斥的,应该根据实际情况适当选择配置节:

日志组件log4net学习总结日志组件log4net学习总结
 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>
配置文件