C# log4net 日志记录

一、log4net常用节点介绍

节点名称                  说明
appender                  type=RollingFileAppender 的意思是将日志以回滚文件的形式写到文件中
file  文件写入位置
appendToFile  是否追加到文件
maximumFileSize 

最大的文件大小。我们可以使用"KB", "MB" 或 "GB"为 MaxFileSize 作为后缀限定大小。默认的文件大小是10MB。

rollingStyle="Size" 时才有效

RollingStyle 

是文件创建的方式。上例中市设置为以Date方式创建新文件

DatePattern 

日期格式,当我们设置了RollingStyle 为Date方式后,Log4Net会自动使用DatePattern 中的日期格式来创建新的日志文件

MaxSizeRollBackups          

当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定。比如说,我们是以日期格式作为日志文件名的,假设今天是2013-10-28,那么今天创建的日志文件名就是20131028.log,当这个文件中要超过MaxFileSize的时候,Log4Net就自动将老的20131028.log改名为20131028.log.1,并创建一个新的20131028.log文件

rollingStyle="Size" 时才有效

StaticLogFileName 

是否采用静态文件名。因为我们这个例子是采用以日期作为文件名,每天的日志文件的名字都是动态的,所以上例中为false。如果采用静态文件名,那么日志文件的名字就是唯一确定的。可以参考下面的配置文件进行设置。下面的配置文件中就是采用静态文件名,生成的日志文件名都是log.txt

   

二、安装log4net及配置

  1. 使用nuget 安装 或者 下载 log4net 文件,然后添加引用。
  2. 在webconfig 中添加配置节点或者单独一个log4net.config 文件。如下:
    <?xml version="1.0" encoding="utf-8"?>
    
    <configuration> 
      <configSections> 
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> 
      </configSections>  
      <log4net> 
        <!--按照日期创建文件夹,并生成日志文件-->  
        <!--<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          <file type="log4net.Util.PatternString" value="Logs\%date{yyyy-MM}\%date{yyyy-MM-dd}.log" />
          <appendToFile value="true" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 线程ID:[%t] 日志级别:%-5p %c  -描述: %m%n " />
          </layout>
        </appender>-->  
        <!--按照日期创建文件夹,并生成日志文件,支持按文件的自定义大小创建多个文件-->  
        <!--<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">  
          <file type="log4net.Util.PatternString" value="Logs\%date{yyyy-MM-dd}\%date{yyyy-MM-dd}.log" />  
          <appendToFile value="true" />  
          <rollingStyle value="Size" />  
          <maximumFileSize value="5KB" />
          <maxSizeRollBackups value="30" />  
          <staticLogFileName value="false" />  
           <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 线程ID:[%t] 日志级别:%-5p %c  -描述: %m%n " />
          </layout> 
        </appender>-->  
        <!--按照日期创建文件夹,并生成日志文件-->  
        <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
          <file value="Logs\"/>  
          <appendToFile value="true"/>  
          <!--<maximumFileSize value="5KB" />
          <maxSizeRollBackups value="30" />-->  
          <staticLogFileName value="false"/>  
          <rollingStyle value="Date"/>  
          <datePattern value="yyyy-MM\yyyy-MM-dd'.log'"/>  
          <layout type="log4net.Layout.PatternLayout,log4net"> 
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} 线程ID:[%t] 日志级别:%-5p %c  -描述: %m%n "/> 
          </layout> 
        </appender>  
        <root> 
          <level value="debug"/>  
          <!--文件形式记录日志-->  
          <appender-ref ref="LogFileAppender"/> 
        </root> 
      </log4net> 
    </configuration>
  3. 在程序中指定配置
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

    或者在Global.asax文件中添加如下配置

    log4net.Config.XmlConfigurator.Configure();

    或者在初始化log对象时初始化配置信息

    public class LoggerManager
        {
            private static readonly ILog log = null;
            static LoggerManager()
            {
                FileInfo file = null;
                //从指定位置的log4net文件初始化配置
                file = HttpContext.Current != null ? new FileInfo(HttpContext.Current.Server.MapPath("~/config/log4net.config")) : new FileInfo(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/config/log4net.config");
                log4net.Config.XmlConfigurator.ConfigureAndWatch(file);
                log = log4net.LogManager.GetLogger("LogFileAppender");
            }
     }

         Log4net SDK Document

 

 

原文地址:https://www.cnblogs.com/qiufengke/p/5337147.html