Log4Net详解

新建一个WebApplication,添加一个“应用程序配置文件”(App.config)
添加对log4net.dll的引用
在Web.Config (或App.Config)添加配置

一、Log4Net配置

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <!-- Define some output appenders -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="test.txt"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="1024KB"/>
      <rollingStyle value="Size"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
  </log4net>
</configuration>

在程序最开始运行的地方添加代码:

   log4net.Config.XmlConfigurator.Configure();

下面以控制台程序为例:

class Program
    {
        private static ILog log = LogManager.GetLogger(typeof(Program));

        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();

            log.Debug("开始运行");
            string s = Console.ReadLine();
            log.Debug("用户输入:"+s);
            try
            {
                int i = Convert.ToInt32(s);
            }
            catch (Exception ex)
            {
                log.Error("用户输入的数据错误:" + s, ex);
            }

            Console.ReadKey();
            log.Debug("程序退出");
        }

二 Log4net核心组成

Log4net主要由五个部分组成,分别为Logger,Appenders, Filters, Layouts 和Object Renders。

一)Logger(日志)

1. 记录日志的分类:

Log4net能够以多种方式输出日志。支持的日志输出常用的主要媒介有数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制台,文件,事件日志(可以用事件查看器查看)和邮件等多种方式。

2. 日志的级别

Log4net支持多种级别的日志。优先级从高到低依次排列如下:

FATAL > ERROR > WARN > INFO > DEBUG

此外还有ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求)这两种特殊的级别。

二)Appenders

Appenders决定日志输出的方式。

Appenders必须实现log4net.Appenders.IAppender接口。

Log4net目前支持的输出方式包括: 1 AdoNetAppender       将日志记录到数据库中。可以采用SQL和存储过程两种方式。

2 AnsiColorTerminalAppender       在ANSI 窗口终端写下高亮度的日志事件。

3 AspNetTraceAppender       能用asp.net中Trace的方式查看记录的日志。

4 BufferingForwardingAppender       在输出到子Appenders之前先缓存日志事件。

5 ConsoleAppender       将日志输出到控制台。

6 EventLogAppender       将日志写到Windows Event Log.

7 FileAppender       将日志写到文件中。

8 LocalSyslogAppender       将日志写到local syslog service (仅用于UNIX环境下). 9 MemoryAppender       将日志存到内存缓冲区。

10 NetSendAppender       将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。

11 RemoteSyslogAppender       通过UDP网络协议将日志写到Remote syslog service。

12 RemotingAppender       通过.NET Remoting将日志写到远程接收端。

13 RollingFileAppender       将日志以回滚文件的形式写到文件中。

14 SmtpAppender       将日志写到邮件中。

15 TraceAppender       将日志写到.NET trace 系统。

16 UdpAppender       将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。

三)Filters

Appender对象将日志以缺省的方式传到输出流,然后Filter可以按照不同的标准控制日志的输出。Filter可以再配置文件中配置。最简单的形式是在appender中写明一个Threshold.这样只有级别大于或等于此Threshold的日志才被记录。

Filters必须实现log4net.Filters.IFilter接口。

四)Layouts

Layouts控制日志显示的格式样式。日志的显示格式如下:

"%timestamp [%thread] %-5level %logger - %message%newline"

Timestamp: 表示程序已经开始执行的时间。 单位[毫秒]。

Thread:执行当前代码的线程。

Level:日志的级别。

Logger:日志相关请求的名称。

Message: 日志消息。

Layouts还可以控制日志的输出样式,比如以普通形式或以xml等形式输出。

posted @ 2013-06-04 11:25  张国朋  阅读(218)  评论(0编辑  收藏  举报