天天看點

Log4net

1、添加引用

Log4net

 2、添加一個應用程式配置檔案,并将其改名

Log4net

3、内部配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <logger name="logerror">
      <level value="ALL" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogError\\" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <!--<param name="MaximumFileSize" value="100MB" />
      <param name="MaxSizeRollBackups" value="1000" />-->
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="異常時間:%date 線程ID:[%thread] 日志級别:%-5level 相關類:%logger - 描述:%message%newline" />
      </layout>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogInfo\\" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <!--<param name="MaximumFileSize" value="100MB" />
      <param name="MaxSizeRollBackups" value="1000" />-->
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="記錄時間:%date 線程ID:[%thread] 日志級别:%-5level 相關類:%logger - 描述:%message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>      

 配置樣式:

%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息 
%n(new line):換行 
%d(datetime):輸出目前語句運作的時刻 
%r(run time):輸出程式從運作到執行到目前語句時消耗的毫秒數 
%t(thread id):目前語句所在的線程ID 
%p(priority): 日志的目前優先級别,即DEBUG、INFO、WARN…等 
%c(class):目前日志對象的名稱,例如: 
%f(file):輸出語句所在的檔案名輸出樣式:

%m(message):輸出的日志消息,如ILog.Debug(…)輸出的一條消息 
%n(new line):換行 
%d(datetime):輸出目前語句運作的時刻 
%r(run time):輸出程式從運作到執行到目前語句時消耗的毫秒數 
%t(thread id):目前語句所在的線程ID 
%p(priority): 日志的目前優先級别,即DEBUG、INFO、WARN…等 
%c(class):目前日志對象的名稱,例如: 
%f(file):輸出語句所在的檔案名。 
%l(line):輸出語句所在的行号。 
%數字:表示該項的最小長度,如果不夠,則用空格填充,如“%-5level”表示level的最小寬度是5個字元,如果實際長度不夠5個字元則以空格填充。。 
%l(line):輸出語句所在的行号。 
%數字:表示該項的最小長度,如果不夠,則用空格填充,如“%-5level”表示level的最小寬度是5個字元,如果實際長度不夠5個字元則以空格填充。
      

  配置詳解

<!--控制級别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定義級别為INFO,則INFO級别向下的級别,比如DEBUG日志将不會被記錄-->
<!--日志檔案名開頭,復原用Date隻需相對路徑即可-->
<file value="c:\Log\Test.log"/>
<!--日期的格式,每天換一個檔案記錄,如不設定則永遠隻記錄一天的日志,需設定-->
<datePattern value="(yyyyMMdd)"/>
<!--是否追加到檔案,預設為true,通常無需設定-->
<appendToFile value="true"/>
<!--變換的形式為日期,這種情況下每天隻有一個日志-->
<!--此時MaxSizeRollBackups和maximumFileSize的節點設定沒有意義-->
<!--<rollingStyle value="Date"/>-->
<!--變換的形式為日志大小-->
<!--這種情況下MaxSizeRollBackups和maximumFileSize的節點設定才有意義-->
<RollingStyle value="Size"/>
<!--每天記錄的日志檔案個數,與maximumFileSize配合使用-->
<MaxSizeRollBackups value="10"/>
<!--每個日志檔案的最大大小-->
<!--可用的機關:KB|MB|GB-->
<!--不要使用小數,否則會一直寫入目前日志-->
<maximumFileSize value="2MB"/>      

4、觸發配置二選一

a、添加配置語句

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]      
Log4net

 b、

<add key="log4net.Config" value="log4net.config"/>
<add key="log4net.Config.Watch" value="True"/>      
Log4net

 5、修改配置檔案屬性

Log4net
/// <summary>
        /// 記錄錯誤日志
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        public static void Error(string message, Exception ex)
        {
            ILog log =LogManager.GetLogger("logerror");
            if (ex != null)
                log.Error(message, ex);
            else
                log.Error(message);
        }
        /// <summary>
        /// 記錄消息日志
        /// </summary>
        /// <param name="message"></param>
        public static void Info(string message)
        {
            ILog log = LogManager.GetLogger("loginfo");
            log.Info(message);
        }