Log4Net的入門使用

一 下載Log4Net,找到相應版本的log4net.dll

官方地址是:http://logging.apache.org/log4net/,然後找到下載頁面,下載壓縮包:

第二步 添加引用

第三步  在配置文件中寫參數:(我這裏是winform,所以在app.config)

有兩種配置方法:1是分等級分別寫入不同的日誌文件,2是不論什麼等級都記錄到一塊一個日誌文件內:

分等級的配置:

 <log4net>
    <appender name ="Info" type="log4net.Appender.RollingFileAppender" >
    <file value ="Syslog\\"/>
      <!--file就是規定下目錄,比如文中是要放入Syslog文件夾,如果沒有程序會自動創建-->
    <appenderToFile value="true"/>
    <rollingStyle value="Date"/>
    <datePattern value="yyyyMM\\yyyyMMdd'.Info'"/>
    <staticLogFileName value ="false"/>
    <!--staticLogFileName 是true的話文件名稱只按照file值走,如果是false那麼是在file值後面加上datepattern值-->
    <maximumFileSize value ="2MB"/>
    <MaxSizeRollBackups  value="100"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%newline %n記錄時間:%d{yyy-MM-dd HH:mm:ss }, %n線程ID:[%thread] %n日誌級別:  %-5level %n出錯類:%logger property: [%property{NDC}] - %n錯誤描述:%message%n"/>
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="Info" />
      <levelMax value="Info" />
    </filter>
    </appender>
    <!--一個log4net可以對照多個appender標籤,每個appender標籤要不同的命名,然後在root裏appender-ref對照起來,配置多個appender就可以按照不同等級分類寫入到不同文件中-->
    <appender name="ERROR" type="log4net.Appender.RollingFileAppender">
      <file value ="SysLog\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM\\yyyyMMdd'.ERROR'"/>
      <staticLogFileName value ="false"/>
      <maximumFileSize value="2MB"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline %n記錄時間:%d{yyy-MM-dd HH:mm:ss }, %n線程ID:[%thread] %n日誌級別:  %-5level %n出錯類:%logger property: [%property{NDC}] - %n錯誤描述:%message%n"/>
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
  
    <root>
      <level value="ALL"/>
      <!--控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
      <!--比如定義級別爲INFO,則INFO級別向下的級別,比如DEBUG日誌將不會被記錄-->
      <appender-ref ref="Info" />
      <appender-ref ref="ERROR" />
    </root> 
  </log4net>

不論什麼等級都記錄到一塊一個日誌文件內:

<log4net>
    <!--一個log4net可以對照多個appender標籤,每個appender標籤要不同的命名,然後在root裏appender-ref對照起來,配置多個appender就可以按照不同等級分類寫入到不同文件中-->
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value ="SysLog\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM\\yyyyMMdd'.ERROR'"/>
      <staticLogFileName value ="false"/>
      <maximumFileSize value="2MB"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline %n記錄時間:%d{yyy-MM-dd HH:mm:ss }, %n線程ID:[%thread] %n日誌級別:  %-5level %n出錯類:%logger property: [%property{NDC}] - %n錯誤描述:%n%message%n"/>
      </layout>    
    </appender>
    <root>
      <level value="ALL"/>
      <!--控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
      <!--比如定義級別爲INFO,則INFO級別向下的級別,比如DEBUG日誌將不會被記錄-->
      <appender-ref ref="RollingFileAppender" />
    </root>
    <logger name="Logging">
    </logger>
  </log4net>

注意:filter標籤可以設置level等級,多個或一個appender就靠它來區分了。 然後在在  app.config 的<configSections>標記中添加:
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

第四步:在\Properties\AssemblyInfo.cs中添加監視:
[assembly: log4net.Config.XmlConfiguratorAttribute(Watch = true)]

第五步:根據需要自定義一個類做輔助:枚舉一下:

  class Syslog
    {
        public enum Level //這裏等級根據需要枚舉
        {
            Debug,
            Info,
            Warn,
            Error,
            Fatal
        }
        private static  log4net.ILog ILog = log4net.LogManager.GetLogger("Logging");
       
        public static void Register( Level Level,Type t, Exception ex )//這裏也可以使用string ;Type 根據自己需要
        {
            if (Level != null)
            {
                switch (Level)
                {
                    case Level.Debug:
                        ILog.Debug(t, ex );
                        break;
                    case Level.Info:
                        ILog.Info(t, ex);
                        break;
                    case Level.Warn:
                        ILog.Warn(t, ex);
                        break;
                    case Level.Error:
                        ILog.Error(t, ex);
                        break;
                    case Level.Fatal:
                        ILog.Fatal(t, ex);
                        break;
                }
            }
        }
    }

效果:如何歸類方便就根據自己需要進行配置參數就行。


附:

日誌的等級,它們由高到底分別爲:

OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL ,向上兼併,比如寫info那麼debug就不會再生效,寫off全不報,寫all都報

等級程度介紹(摘抄的):

FATAL(致命錯誤):記錄系統中出現的能使用系統完全失去功能,服務停止,系統崩潰等使系統無法繼續運行下去的錯誤。例如,數據庫無法連接,系統出現死循環。

ERROR(一般錯誤):記錄系統中出現的導致系統不穩定,部分功能出現混亂或部分功能失效一類的錯誤。例如,數據字段爲空,數據操作不可完成,操作出現異常等。

WARN(警告):記錄系統中不影響系統繼續運行,但不符合系統運行正常條件,有可能引起系統錯誤的信息。例如,記錄內容爲空,數據內容不正確等。

INFO(一般信息):記錄系統運行中應該讓用戶知道的基本信息。例如,服務開始運行,功能已經開戶等。

DEBUG (調試信息):記錄系統用於調試的一切信息,內容或者是一些關鍵數據內容的輸出。


也是在跟帖學習的,感謝:

http://www.cnblogs.com/jiajinyi/p/5884930.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章