log4net

http://logging.apache.org/log4net/

配置如下:

在 <configSections>节点配置如下:

   <configSections>
    <section name ="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>

另外,还要在顶级节点<configuration>下增加<log4net>子节点;在<log4net>节点下增加<appender>子节点,每个子节点代表一种记录日志的方式。

View Code
1 <log4net>
2 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
3 <file value="D:log4netfile.txt" />
4 <appendToFile value="true" />
5 <rollingStyle value="Date" />
6 <datePattern value="yyyyMMdd-HH:mm:ss" />
7 <layout type="log4net.Layout.PatternLayout">
8 <footer value="by Lee yi" />
9 <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline耗费时间%run time当前日志名称%class" />
10 </layout>
11 </appender>
12 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
13 <layout type="log4net.Layout.PatternLayout">
14 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
15 </layout>
16 </appender>
17 <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
18 <layout type="log4net.Layout.PatternLayout">
19 <conversionPattern value="%date[%thread]%-5level%logger[%property{NDC}]-%message%newline"/>
20 </layout>
21 </appender>
22 <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
23 <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:log4net.mdb"/>
24 <commandText value="Insert into LogDetails([LogDate],[Thread],[Level],[Logger],[Message]) values(@logDate,@thread,@logLevel,@logger,@message)"/>
25 <parameter>
26 <parameterName value="@logDate"/>
27 <dbType value="String"/>
28 <size value="240"/>
29 <layout type="log4net.Layout.PatternLayout">
30 <conversionPattern value="%date"/>
31 </layout>
32 </parameter>
33 <parameter>
34 <parameterName value="@thread"/>
35 <dbType value="String"/>
36 <size value="240"/>
37 <layout type="log4net.Layout.PatternLayout">
38 <conversionPattern value="%thread"/>
39 </layout>
40 </parameter>
41 <parameter>
42 <parameterName value="@logLevel"/>
43 <dbType value="String"/>
44 <size value="240"/>
45 <layout type="log4net.Layout.PatternLayout">
46 <conversionPattern value="%level"/>
47 </layout>
48 </parameter>
49 <parameter>
50 <parameterName value="@logger"/>
51 <dbType value="String"/>
52 <size value="240"/>
53 <layout type="log4net.Layout.PatternLayout">
54 <conversionPattern value="%logger"/>
55 </layout>
56 </parameter>
57 <parameter>
58 <parameterName value="@message"/>
59 <dbType value="String"/>
60 <size value="240"/>
61 <layout type="log4net.Layout.PatternLayout">
62 <conversionPattern value="%message"/>
63 </layout>
64 </parameter>
65 </appender>
66 <root>
67 <level value="WARN"/>
68 <appender-ref ref="LogFileAppender"/>
69 <appender-ref ref="ConsoleAppender"/>
70 <appender-ref ref="EventLogAppender"/>
71 </root>
72 <logger name="testApp.Logging">
73 <level value="DEBUG"/>
74 </logger>
75 </log4net>

Appender节点的name属性值有如下一下,仅列出经常用的属性值:

AdoNetAppender:利用ADO.NET记录到数据库的日志;

ConsoleAppender:将日志输出到控制台;

EventLogAppender:将日志写到Windows Event Log;

使用log4net中可能会使用到一些参数:

%m(message):输出的日志消息;

%n(new line):换行;

%d(datetime):输出到当前语句运行的时刻;

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数;

%t(thread id):当前语句所在线程id

%p(priority):日志的当前优先级,即DEBUG,INFO,WARN..等等;

%c(class):当前日志对象的名称;

%of(file):输出语句所在文件名;

%l(line):输出语句所在的行号.

%数字:表示该项的最小长度,如果不够,则用空格填充,如"%-5level"表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

把数据存储到Access数据库中,代码如下:

View Code
1 static void Main(string[] args)
2 {
3 ILog log = log4net.LogManager.GetLogger("AdoNetAppender_Access");
4 log.Error("error", new Exception("发生了一个异常"));
5 log.Fatal("fatal", new Exception("发生了一个致命错误"));
6 log.Info("info");
7 log.Debug("debug");
8 log.Warn("warn");
9 Console.WriteLine("日志记录完毕。");
10 }

root修改如下:

    <root>
      <level value="WARN"/>
      <appender-ref ref="AdoNetAppender_Access"/>//日志保存在Access数据库中
      <!--<appender-ref ref="LogFileAppender"/>//保存在文件中
      <appender-ref ref="ConsoleAppender"/> //输出到控制台中
      <appender-ref ref="EventLogAppender"/>-->
    </root>

原文地址:https://www.cnblogs.com/cpetcoandy/p/2128552.html