• (2)log4net之FileAppender


    在正式开始之前,我们有必要介绍一下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&quot;.txt&quot;"/>
        <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
    logger定义了具体的日志对象的设置
    在logger中,name指定了日志的名字,通过改名字,我们可以使用
    ILog logger = LogManager.GetLogger("Global");
    来获取改名字的日志;
    logger一样可以定义level以及appender
     
    3)appender(此处指RollingFileAppender)
    appender的name指定了appender的名字,用来在root或logger中作为ref的值。type指定了appender的类型,目前log4net定义了20几种appender以满足不同情况的输出,同时,我们还可以定义自己的appender;
    appender的file指定了log存储文件的路径,如果该路径不存在会自动创建;
    appenderToFile:标识是添加到现有文件中还是覆盖原有的日志,true表示添加到现有日志文件
    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为单位,与MaxFileSize等价,唯一不一样的是MaxFileSize 可以使用bytes来设值;
    MaxSizeRollBackups:设置变换文件大小的文件值即,当文件超过设定值时,则新建文件;
    DatePattern :指定生成文件的格式
    layout:设定日志的输出格式,各个参数所代表的意思,格式太多,具体可参照官方文档:http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html
    几个主要的说明如下;
    %m:message,
    %d: date,记录log的时间,
    %n:new line,
    %c:class 当前日志对象的名字
    %L:语句所在行号
    %F:语句所在文件名
     
    在程序中使用log4net
    了解问配置文件之后,让我们看看如何来记录log并输出到文件中
     
    首先需要读取log4net的配置文件:
    log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/log4net.xml")));
     
    然后,LoggerManager的静态方法GetLogger()来获取已经存在的logger对象,如果不存在,则会新建一个logger对象:
    ILog logger = LogManager.GetLogger("Global");
     
    获取logger对象之后,我们就可以往该对象里面记录log:
    logger.Debug("test rolling file appender."+currentTime.ToString());
     
    几步完成之后,就可以在我们配置的路径下看到log文件了,以下是log中的记录
    2012-03-11 17:51:22,411 [5] DEBUG Global [(null)] - test rolling file appender.2012/3/11 17:51:22
  • 相关阅读:
    jquery $.each遍历json数组方法
    JQuery插件编写
    创建JAVASCRIPT对象3种方法
    微信开发流程
    有关索引那点事
    获取数据库内所有的表和表内字段的信息
    asp.net MVC4 异步文件上传
    QT学习:01 工程文件详解
    QT学习:00 介绍
    Linux 系统编程 学习 总结
  • 原文地址:https://www.cnblogs.com/tian2010/p/2390402.html
Copyright © 2020-2023  润新知