Log4net入门(帮助类篇)

  在前几篇Log4net入门文件的讲述过程中,我们在使用log4net的类中都要编写如下一行代码:

 1 private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

  如果有多个类都要使用log4net输出日志信息,那么每个类中都要编写这一行代码,为了避免这种情况的发生,我们将编写一个静态类来对log4net进行封装。那么,以后我们在什么地方需要输出日志信息,只需要调用这个静态类的相应方法即可。实现步骤如下所示:

1、创建一个空白解决方案,命名为“Utils”。

2、在该解决方案中创建一个名为“Log4netUtil”的类库项目,然后对该类库项目使用“NuGet包管理器”安装log4net程序集。

3、展开“Log4netUtil”类库项目的“Properties”属性,双击打开“AssemblyInfo.cs”文件,在该文件的最下面添加如下一行代码:

 1 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)] 

  注意:上面一行代码中的“Log4net.config”要与我们之后添加的配置文件的名字一致。

4、在“Log4netUtil”类库项目中添加一个名为“Log4netHelper”的静态类,代码如下所示:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Log4netUtil
 8 {
 9     public static class Log4netHelper
10     {
11         private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
12 
13         public static void Debug(object message)
14         {
15             log.Debug(message);
16         }
17 
18         public static void Debug(object message, Exception exception)
19         {
20             log.Debug(message, exception);
21         }
22 
23         public  static void Info(object message)
24         {
25             log.Info(message);
26         }
27 
28         public static void Info(object message, Exception exception)
29         {
30             log.Info(message, exception);
31         }
32 
33         public static void Warn(object message)
34         {
35             log.Warn(message);
36         }
37 
38         public static void Warn(object message, Exception exception)
39         {
40             log.Warn(message, exception);
41         }
42 
43         public static void Error(object message)
44         {
45             log.Error(message);
46         }
47 
48         public static void Error(object message, Exception exception)
49         {
50             log.Error(message, exception);
51         }
52 
53         public static void Fatal(object message)
54         {
55             log.Fatal(message);
56         }
57 
58         public static void Fatal(object message, Exception exception)
59         {
60             log.Fatal(message, exception);
61         }
62     }
63 }

5、右击“Utils”解决方案,新建一个名为“Log4netTest”控制台应用程序,该应用程序主要用来测试log4net的帮助类是否正确运行。

6、右击新创建的“Log4netTest”控制台应用程序的“引用”节点,添加对“Log4netUtil”类库的引用。

7、在“Log4netTest”的根目录下添加一个名为“Log4net.config”的配置文件,并将该配置文件的“复制到输出目录”属性的值设置为“始终复制”,然后修改该配置文件的内容如下所示:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3   <configSections>
 4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 5   </configSections>
 6 
 7   <log4net>
 8     <!-- 将日志以回滚文件的形式写到文件中 -->
 9     <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
10     <appender name="RollingFileAppenderNameByDate" type="log4net.Appender.RollingFileAppender">
11       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
12       <file value="C:\Logs\" />
13       <!-- 将日志信息追加到已有的日志文件中-->
14       <appendToFile value="true" />
15       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
16       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
17       <!-- 指定按日期切分日志文件 -->
18       <rollingStyle value="Date" />
19       <!-- 日志文件的命名规则 -->
20       <datePattern value="&quot;UtilLogs_&quot;yyyyMMdd&quot;.log&quot;" />
21       <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
22       <staticLogFileName value="false" />
23 
24       <layout type="log4net.Layout.PatternLayout">
25         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
26       </layout>
27     </appender>
28 
29     <root>
30       <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
31       <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
32       <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
33       <level value="ALL" />
34       <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
35       <appender-ref ref="RollingFileAppenderNameByDate" />
36     </root>
37   </log4net>
38 </configuration>

8、双击打开“Log4netTest”项目中的“Program.cs”文件,修改该文件如下所示:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Log4netTest
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             Log4netUtil.Log4netHelper.Info("Info信息!");
14         }
15     }
16 }

  运行控制台应用程序,我们即可看到日志文件正确生成!

  源码下载

posted @ 2016-12-15 16:08  编码之道  阅读(2055)  评论(0编辑  收藏  举报