首页 > 代码库 > log4net 配置

log4net 配置

概述

log4net是一个开源日志记录组件。用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中。其日志级别从低到高有:

  • ALL
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
  • OFF

一个实例

先来看一个例子,了解下log4net是如何工作的。

 1 using log4net;
 2 
 3 namespace Log4net_tutorial
 4 {
 5     class Program
 6     {
 7         private static readonly ILog log = LogManager.GetLogger(typeof(Program));
 8 
 9         static void Main(string[] args)
10         {
11             log.Info("first log info...");
12 
13             log.Info("second log info...");
14         }
15     }
16 }

 

log4net.config文件中的配置如下:

<configuration>
  <log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy-MM-dd} [%thread] %-5level - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="Console" />
    </root>
  </log4net>
</configuration>

运行结果如图:

从这个例子中可以看出log4net的使用非常简单,在配置文件中配置相应的信息后,只需要很少的代码就可以轻松的输入日志。

配置文件

配置程序集

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

log4net的XmlConfiguratorAttribute 配置允许三个属性:

  • ConfigFile 

    配置文件的名字,程序会从程序的根目录(AppDomain.CurrentDomain.BaseDirectory)下找该名字的文件。该属性不能和ConfigFileExtension一块使用。

  • ConfigFileExtension

    指定配置文件的后缀名,如果当前文件为TestApp.exe,该属性设置成了config,则程序会从当前程序的根目录(AppDomain.CurrentDomain.BaseDirectory)找一个名为TestApp.exe.config的配置文件。

  • Watch

    如果该属性设置成true,则表示每次log4net的配置文件有改动时,都会重新加载配置文件。

log4net的结构

  要使用log4net,需要在配置文件的顶级节点<configuration>下增加<log4net>子节点。log4net主要有Appender、Layout和Logger等组件。

  • Appendr(附着器)

    如下是一个控制台输出日志的Appender的例子,

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value=http://www.mamicode.com/"%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
</appender>

    Appender有两个必要的属性:nametype。name属性会在<appender-ref>节点中作为调用Appender的标识。type除了上边提到的控制台输出日志的log4net.Appender.ConsoleAppender,常用的还有 log4net.Appender.FileAppender(输出日志到文本文件)、log4net.Appender.AdoNetAppender(输出日志到数据库),更多Appender的信息见Apache上的log4net官方文档。

  • Layout(布局)

    Layout是Appender的一个子节点,用来控制输出日志的内容和格式等信息。如下图的例子

<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value=http://www.mamicode.com/"%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
  • Logger(记录器)

    Logger有两种:Root Logger和普通的Logger。

    root Logger:

<root>
    <level value=http://www.mamicode.com/"INFO" />
    <appender-ref ref="ConsoleAppender" />
</root>

    普通的Logger:

<logger name="LoggerName">
    <level value=http://www.mamicode.com/"DEBUG" />
    <appender-ref ref="ConsoleAppender" />
</logger> 

  在调用log4net的时候,用到的GetLogger,如果其中的参数可以匹配到logger的name属性,则使用匹配的Logger,如果干没有找到匹配的name则使用Root Logger

 

参考资料:

  1. http://logging.apache.org/log4net/release/manual/configuration.html
  2. Log4Net使用详解(续)