Log4Net中的FileAppender和RollingFileAppender

在正式开始之前,有必要介绍一下FileAppender和RollingFileAppender的区别。
        FileAppender和RollingFileAppender都是用来将日志写入到文本文件中。但是,RollingFileAppender提供了更多的选项,可以很方便的控制何时新建一个新的文本文件。
        这个还是很有必要的,想象以下,你把所有的日志都记录到一个文本文件中,即使系统再小,日复一日,你也会有找不到日志的时候,何况,随着文本的增大,文本的写入与打开也会想得更加的慢,甚至出现超时。因此,本文我们主要介绍RollingFileAppender。
        在web.config中添加配置,要使用log4net,必须在web.config增加配置节点,具体节点如下:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
配置log4net文件,我们配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="GlobalFile" type="log4net.Appender.RollingFileAppender">
    <file value="Global/log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <datePattern value="yyyyMMdd-HHmm".txt""/>
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/>
    </layout>
  </appender>
  <root>
    <level value="DEBUG"/>
    <appender-ref ref="GlobalFile"/>
  </root>
  <logger name="Global">
    <level value="DEBUG"/>
  </logger>
</log4net>
1)root
root是log4net配置文件必须的,所有日志对象(logger)都是继承自root。在root中,可以定义level和appender,如果level没有定义,则默认为DEBUG;appender-ref定义了日志对象所使用的Appender,此处为GlobalFile,
2)logger
1
logger定义了具体的日志对象的设置
1
在logger中,name指定了日志的名字,通过改名字,我们可以使用
1
ILog logger = LogManager.GetLogger("Global");
1
来获取改名字的日志;
1
logger一样可以定义level以及appender
1
  
1
3)appender(此处指RollingFileAppender)
1
appender的name指定了appender的名字,用来在root或logger中作为ref的值。type指定了appender的类型,目前log4net定义了20几种appender以满足不同情况的输出,同时,我们还可以定义自己的appender;
1
appender的file指定了log存储文件的路径,如果该路径不存在会自动创建;
1
appenderToFile:标识是添加到现有文件中还是覆盖原有的日志,true表示添加到现有日志文件
1
rollingStyle:新建一个日志文件的方式,有4种取值方式Once, Date, Size, Composite默认为Composite,各种方式从源代码的定义也不难看出:
public class RollingFileAppender : FileAppender
    {
        #region Public Enums
 
        /// <summary>
    /// Style of rolling to use
    /// </summary>
    /// <remarks>
    /// <para>
    /// Style of rolling to use
    /// </para>
    /// </remarks>
    public enum RollingMode
    {
      /// <summary>
      /// Roll files once per program execution
      /// </summary>
      /// <remarks>
      /// <para>
      /// Roll files once per program execution.
      /// Well really once each time this appender is
      /// configured.
      /// </para>
      /// <para>
      /// Setting this option also sets <c>AppendToFile</c> to
      /// <c>false</c> on the <c>RollingFileAppender</c>, otherwise
      /// this appender would just be a normal file appender.
      /// </para>
      /// </remarks>
      Once    = 0,
 
      /// <summary>
      /// Roll files based only on the size of the file
      /// </summary>
      Size    = 1,
 
      /// <summary>
      /// Roll files based only on the date
      /// </summary>
      Date    = 2,
 
      /// <summary>
      /// Roll files based on both the size and date of the file
      /// </summary>
      Composite = 3
    }
MaximumFileSize:文件的最大值,可以使KB或MB为单位,与< font  style="font-weight: normal">MaxFileSize等价,唯一不一样的是</ font >MaxFileSize 可以使用bytes来设值;
1
MaxSizeRollBackups:设置变换文件大小的文件值即,当文件超过设定值时,则新建文件;
1
DatePattern :指定生成文件的格式
1
layout:设定日志的输出格式,各个参数所代表的意思,格式太多,具体可参照官方文档:http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html
1
几个主要的说明如下;
1
%m:message,
1
%d: date,记录log的时间,
1
%n:new line,
1
%c:class 当前日志对象的名字
1
%L:语句所在行号
1
%F:语句所在文件名
1
  
1
< strong >在程序中使用log4net</ strong >
1
了解问配置文件之后,让我们看看如何来记录log并输出到文件中
1
  
1
首先需要读取log4net的配置文件:
1
log4net.Config.XmlConfigurator.Configure( new  FileInfo(Server.MapPath( "~/log4net.xml" )));
1
  
1
然后,LoggerManager的静态方法GetLogger()来获取已经存在的logger对象,如果不存在,则会新建一个logger对象:
1
ILog logger = LogManager.GetLogger( "Global" );
1
  
1
获取logger对象之后,我们就可以往该对象里面记录log:
1
logger.Debug( "test rolling file appender." +currentTime.ToString());
1
  
1
几步完成之后,就可以在我们配置的路径下看到log文件了,以下是log中的记录
1
2012-03-11 17:51:22,411 [5] DEBUG Global [( null )] - test rolling file appender.2012/3/11 17:51:22


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值