zoukankan      html  css  js  c++  java
  • Log4Net配置以及使用

          跟踪程序代码,及时发现程序的运行状态,是每个成熟的软件所必不可少的一个环节,网站发布到真实的环境之后,对于程序的运行状态,我们并不能想开发环境那也,点击调试。日志记录显示就尤为重要,在.NET中记录日志的方法有很多种,常用的也就是Log4net,NLog。这篇文章主要记录Log4net的使用情况,NLog的使用放在后续章节介绍。(PS:其他同仁也介绍了很多关于Log4net的使用,我再他们的基础上梳理了一下使用方式,按自己的理解写下了这篇内容,如果有部分内容雷同,还望原博主理解)

          Log4net是针对.Net程序开发的一版日志记录的DLL组件,使用者只需要配置Config文件,点击添加引用DLL。使用起来也简单方便。Log4Net官网地址有开源的项目,我们开源获取源码,分析代码,这里主要针对使用方面进行介绍:Config文件的配置、API部分代码完善;Log4Net下载DLL

      Log4net的日志等级从低到高依次分为:ALL ---> DEBUG ---> INFO ---> WARN ---> ERROR ---> FATAL ---> OFF

         Log4net中Config配置介绍:

      下面是一个完善的config的配置,将日志信息配置到文本文件中;

    <?xml version="1.0"?>
    <configuration>  
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <!--日志-->
      <log4net>
        <!--<root>
          <level value="ALL"/>
          <appender-ref ref="ErrorAppender"/>
          <appender-ref ref="InfoAppender"/>
        </root>-->
        <logger name="logerror">
          <level value="ERROR" />
          <appender-ref ref="ErrorAppender" />
        </logger>
        <logger name="loginfo">
          <level value="INFO" />
          <appender-ref ref="InfoAppender" />
        </logger>
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="App_Log\Error\" />
          <param name="AppendToFile" value="true" />
          <param name="StaticLogFileName" value="false"/>
          <param name="MaximumFileSize" value="10MB"/>
          <param name="Threshold" value="ALL"></param>
          <param name="DatePattern" value="yyyyMM&quot;\log_&quot;yyyyMMdd&quot;.log&quot;"/>
          <param name="RollingStyle" value="Composite"/>
          <param name="CountDirection" value="1"/>      
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
          </layout>
        </appender>
        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="App_Log\Info\" />
          <param name="AppendToFile" value="true" />
          <param name="StaticLogFileName" value="false"/>
          <param name="MaximumFileSize" value="10MB"/>
          <param name="Threshold" value="ALL"></param>
          <datePattern value="yyyyMMdd" />
          <param name="RollingStyle" value="Date"/>
          <param name="CountDirection" value="1"/>
          <layout type="log4net.Layout.PatternLayout">
            <param name="Header" value="-------------start-----------&#13;&#10;"/>        
            <param name="ConversionPattern" value="%-5p %d [%c] %m%n" />        
          </layout>
        </appender>
      </log4net>
    </configuration>

     config配置参数说明如下:

    参数名

    描述

    filter

    可以有0或多个filter,具体配置在下面的Filter项说明。

    layout

    可以有0或者说1layout,当没有layout时,没有输出。具体配置在下面的layout项说明

    param

    Param有多个可以进行配置,常用的:

    名称

    描述

    File

    文件路径,如果RollingStyleCompositeDate,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名。已经扩展支持虚拟目录

    RollingStyle

    创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite

    DatePattern

    RollingStyleCompositeDate这里设置文件名格式

    StaticLogFileName

    True/false,默认为true。为true时,RollingStylerdate值将无效。且为true时,需要在file里指定文件名,所有日志都会记录在这个文件里。

    MaximumFileSize

    RollingStyleCompositeSize这里设置最大文件大小(可以KBMBGB为单位,默认为字节)

    CountDirection

    默认值为-1。当文件超过MaximumFileSize的大小时,如果要创建新的文件来存储日志,会根据CountDirection的值来重命名文件。大于-1的值时,file里指定的文件名会依次加上.0,.1,.2递增。当等于或小于-1时,创建依赖于MaxSizeRollBackups参数值,创建备份日志数。

    MaxSizeRollBackups

    备份日志数目,默认为0。在CountDirection为负数时有效。

    Threshold

    起始日志级别,取值为下面文章讨论的预定义日志级别。低于此级别的日志不会被记录。

    AppendToFile

    True/false,默认为true。当文件存在时,是否在原文件上追加内容。

    例如:

    <param name="File" value="UpLoads\Log\"/>

        <param name="MaximumFileSize" value="3000"/>

        <param name="StaticLogFileName" value="false"/>

        <param name="Threshold" value="Debug"></param>

        <param name="DatePattern" value="yyyyMM&quot;\#{ServerHostName}-&quot;yyyyMMdd&quot;.log&quot;"/>

        <param name="RollingStyle" value="Date"/>

    ConversionPattern中的部分标识符的意义介绍如下:

    <!--==================layout节点的配置说明start======================-->
    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息  
    %n(new line):换 行                                                        
    %d(datetime):输出当前语句运行的时刻
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
    %t(thread id):当前语句所在的线程ID 
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等  
    %c(class):当前日志对象的名称,例如: 
    模式字符串为:%-10c -%m%n  
    代码为:   
    ILog log=LogManager.GetLogger(“Exam.Log”);  
    log.Debug(“Hello”); 
    则输出为下面的形式:
    Exam.Log       - Hello  
    %L:输出语句所在的行 号
    %F:输出语句所在的文件名 
    %-数字:表示该项的最小长度,如果不够,则用空格填充
    <!--==================layout节点的配置说明end======================-->

    C#代码使用介绍

    添加代码如下:

        /// <summary>
        /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里要配置相应的节点
        /// </summary>
        public class Log4NetHelper
        {
            //log4net日志专用
            public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
            public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
    
            public static void SetConfig()
            {
                log4net.Config.XmlConfigurator.Configure();
            }
    
            public static void SetConfig(FileInfo configFile)
            {
                log4net.Config.XmlConfigurator.Configure(configFile);
            }
            /// <summary>
            /// 普通的文件记录日志
            /// </summary>
            /// <param name="info"></param>
            public static void WriteLog(string info)
            {
                if (loginfo.IsInfoEnabled)
                {
                    loginfo.Info(info);
                }
            }
            /// <summary>
            /// 错误日志
            /// </summary>
            /// <param name="info"></param>
            /// <param name="se"></param>
            public static void WriteLog(string info, Exception se)
            {
                if (logerror.IsErrorEnabled)
                {
                    logerror.Error(info, se);
                }
            }
        }

    主程序中记录Log的使用方式:

    static void Main(string[] args)
            {
                Log4NetHelper.SetConfig();       
                //ILog lgclient = LogManager.GetLogger("loginfo");
                //lgclient.Info("Info-message");
    
                //lgclient.Debug("Debug-message");
    
                //lgclient.Warn("Warn-message");
    
                LogHelper.WriteLog("MyWorkLogInfo");
                Console.ReadLine();
            }

     

  • 相关阅读:
    bind函数
    尾置返回类型
    lambda表达式
    C++谓词
    capacity和size
    容器操作可能会使迭代器失效
    特殊的forward_list操作
    向顺序容器添加元素
    swap与assign
    迭代器
  • 原文地址:https://www.cnblogs.com/xibei666/p/4863411.html
Copyright © 2011-2022 走看看