日志組件log4net學習總結

gcmc 9年前發布 | 23K 次閱讀 日志處理 Log4Net

記錄的日志類別主要有FATAL(致命錯誤)、ERROR(一般錯誤)、WARN(警告)、INFO(一般信息)、DEBUG(調試信息)五種。

1.在配置文件中添加以下配置節,并在頂級節點<configuration>下增加<log4net>子節點。

<configSections>

  <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

 </configSections>

2.在<log4net>節點下增加<appender>子節點,每個<appender>子節點代表一種記錄日志的方式,但并不代表啟用。

<appender name="errorAppender" type="log4net.Appender.RollingFileAppender">

  <filter type="log4net.Filter.LevelMatchFilter">

    <levelToMatch value="ERROR" />

  </filter>

  <filter type="log4net.Filter.DenyAllFilter" />

  <PreserveLogFileNameExtension value="true" />

  <!--日志文件名開頭-->

  <File value="\Logs\err.log" />

  <!--是否追加到文件-->

  <appendToFile value="true" />

  <!--混合使用日期和文件大小變換日志文件名-->

  <rollingStyle value="Composite" />

  <!--日期的格式-->

  <datePattern value="yyyyMMddHHmm" />

  <!--最大變換數量-->

  <maxSizeRollBackups value="1000" />

  <!--最大文件大小-->

  <maximumFileSize value="10MB" />

  <layout type="log4net.Layout.PatternLayout">

    <conversionPattern value="%date %logger - %message%newline" />

  </layout>

</appender>

其中ERROR是日志類別的一種,其余四種不再單獨列出,配置類似。將日志分門別類,便于查找需要的文件及時排查錯誤原因。

3. 在<log4net>節點下增加<root>子節點,每個< root >子節點代表啟用記錄日志的方式。

<root>

  <level value="ALL" />

  <appender-ref ref="errorAppender" />

  <appender-ref ref="infoAppender" />

  <appender-ref ref="debugAppender" />

</root>

其中ALL表示全部啟用,OFF表示全部禁用,其余表示啟用相應的日志記錄。

4. 在<log4net>節點下增加<logger>子節點,每個< logger >子節點代表某個模塊啟用記錄日志的方式,可以避免日志過快增長,但會影響讀寫性能,可以結合實際情況適當選用。配置文件格式同<root>節點。

5.在web應用程序的全局配置文件的Application_Start事件中,添加如下代碼:

XmlConfigurator.Configure();

在需要記錄日志的地方調用如下代碼:

            ILog log = LogManager.GetLogger("Test");

            log.Error("ERROR");

不同的日志類別調用不同的方法,可以把異常信息也傳入到日志文件中以便于查找問題與排除故障。其中創建日志記錄組建實例也可以使用下面的代碼,將更加方便。

            ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

相關參數簡寫附注:

%m:輸出的日志消息

%n:換行

%d:輸出當前語句運行的時刻

%r:輸出程序從運行到執行到當前語句時消耗的毫秒數

%t:當前語句所在的線程ID

%p:日志的當前優先級別

%c:當前日志對象的名稱

%l:輸出語句所在的行號

%f:輸出語句所在的文件名

%-數字—表示該項的最小長度,若不夠則用空格填充

附詳細配置文件具體說明,由于配置文件過長而將類似配置節部分省略,這些配置節不一定要同時使用甚至有些配置節是互斥的,應該根據實際情況適當選擇配置節:

<configuration>
  <configSections >
    <section name ="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <!-- 根日志對象-->
    <root>
      <!-- 默認為DEBUG,主要有ALL、FATAL、ERROR、WARN、INFO、DEBUG、OFF七種,可以不配置-->
      <level value="DEBUG"/>
      <!-- 文件形式記錄FATAL(致命錯誤)日志-->
      <appender-ref ref="fatalRollingFileAppender" />
      <!-- 文件形式記錄ERROR(一般錯誤)日志-->
      <appender-ref ref="errorRollingFileAppender" />
      <!-- 文件形式記錄WARN(警告)日志-->
      <appender-ref ref="warnRollingFileAppender" />
      <!-- 文件形式記錄INFO(一般信息)日志-->
      <appender-ref ref="infoRollingFileAppender" />
      <!-- 文件形式記錄DEBUG(調試信息)日志-->
      <appender-ref ref="debugRollingFileAppender" />
      <!-- 數據庫形式記錄FATAL(致命錯誤)日志(MSSQL)-->
      <appender-ref ref="fatalAdoNetAppender" />
      <!-- 數據庫形式記錄ERROR(一般錯誤)日志(MSSQL)-->
      <appender-ref ref="errorAdoNetAppender" />
      <!-- 數據庫形式記錄WARN(警告)日志(MSSQL)-->
      <appender-ref ref="warnAdoNetAppender" />
      <!-- 數據庫形式記錄INFO(一般信息)日志(MSSQL)-->
      <appender-ref ref="infoAdoNetAppender" />
      <!-- 數據庫形式記錄DEBUG(調試信息)日志(MSSQL)-->
      <appender-ref ref="debugAdoNetAppender" />
    </root>
    <!-- 子日志對象,可以不配置-->
    <logger name="Test" additivity="false">
      <level value="ALL"/>
      <!-- additivity默認值為true,表示繼承根日志對象-->
      <appender-ref ref="AdoNetAppender" additivity="false"/>
    </logger>
    <!-- 定義輸出到文件中-->
    <appender name="fatalRollingFileAppender" type="log4net.Appender.RollingFileAppender" >
      <!-- 舊日志文件自動重命名并生成新日志文件-->
      <preserveLogFileNameExtension value="true" />
      <!-- 日志的路徑-->
      <file value="Logs\fatal.log"/>
      <!-- 是否覆蓋,默認是追加true-->
      <appendToFile value="true"/>
      <!-- 混合使用日期和文件大小變換日志文件名,rollingStyle的值共有Once、Size、Date、Composite四種-->
      <rollingStyle value="Composite"/>
      <!-- 日期的格式-->
      <datePattern value="yyyyMMddHHmm" />
      <!-- 最大變換數量-->
      <maxSizeRollBackups value="1000"/>
      <!-- 最大文件大小-->
      <maximumFileSize value="100KB"/>
      <!-- 名稱是否可以更改,false為可以更改-->
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <!-- 日志會話開始輸出的文字-->
        <header value="開始"/>
        <!-- 日志會話輸出的詳細信息-->
        <conversionPattern value="%n記錄時間:%d 線程ID:[%t] 日志級別:%-5p 出錯類:%c property:[%property{NDC}] - 錯誤描述:%m%n"/>
        <!-- 日志會話結束輸出的文字-->
        <footer value="結束"/>
      </layout>
      <!-- 過濾指定級別之間的日志-->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG"/>
        <levelMax value="FATAL"/>
      </filter>
      <!-- 過濾指定級別的日志-->
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="FATAL" />
      </filter>
    </appender>
  </log4net>
</configuration>

配置文件</pre>

 本文由用戶 gcmc 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!