1. 程式人生 > >Log4Net 之將自定義屬性記錄到文件中 (三)

Log4Net 之將自定義屬性記錄到文件中 (三)

hive days bsp 文本 處理 message homepage layout backup

即解決了將自定義屬性記錄到數據庫之後。一個新的想法冒了出來,自定義屬性同樣也能記錄到文件中嗎?答案是肯定的,因為Log4Net既然已經考慮到了數據庫記錄方式,當然也一定考慮到了其它的記錄方式。but how,how,how(這句話來源於電影功夫熊貓)。接下來讓我們看看如何將自定義屬性記錄到文件中。

  上菜之前我先做個小補充,首先我們用到的消息載體依然是LogMessage,LogMessage類的代碼可以查看"也用 Log4Net 之將日誌記錄到數據庫的配置 (一)"。自定義屬性的名稱依然是UserID,當然,你可以輸出更多自定義屬性,自已加就成了。對應該的後臺代碼依然是我的上一篇文章 "也用 Log4Net 之將日誌記錄到數據庫的後臺實現 (二)"。是不是很好,同樣的代碼可以支持多種日誌輸出方式,這便是Log4Net的優勢之一。

  好了,上菜:

    <logger name="MisTxtLogger">
      <level value="ALL"/>
      <appender-ref ref="MisTxtFile" />
    </logger>

技術分享圖片
    <!--Txt記錄形式-->
    <!--信息日誌配置-->
    <appender name="MisTxtFile" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="D:\\MisLog\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd" />
      <param name="RollingStyle" value="Date" />
      
      <!--自定義成員 -->
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="Int32" />

        <layout type="JJ.Data.LogCommon.CustomLayout">
          <conversionPattern value="%UserID"  />
        </layout>

      </parameter>
      

<layout type="JJ.Data.LogCommon.CustomLayout"> <param name="ConversionPattern" value="%n日誌時間:%d [%t] %n日誌級別:%-5p %n日 誌 類:%c %n%m %n消息描述:%UserID%n" /> </layout>
</appender>
技術分享圖片

  

  在後臺代碼中:把加載的配置節點名稱改成"MisTxtLogger",就可以應用文本輸出的配置了。

    _log = log4net.LogManager.GetLogger("MisTxtLogger"); 

  

  這就是文件記錄形式的配置,你記得把他放到配置文件中的 <log4net></log4net>中就可以了。重點來看以下配置,是從上面的配置中截出來的,為了說明方便。

技術分享圖片
      <!--自定義成員 -->
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="Int32" />

        <layout type="JJ.Data.LogCommon.CustomLayout">
          <conversionPattern value="%UserID"  />
        </layout>

      </parameter>
      
      <layout type="JJ.Data.LogCommon.CustomLayout">
         <param name="ConversionPattern" value="%n日誌時間:%d [%t] %n日誌級別:%-5p %n日 誌 類:%c %n%m %n消息描述:%UserID%n" />
      </layout>
技術分享圖片

  

  在文本記錄形式中,依然要先對自定義屬性進行處理,看代碼中的“UserID”就是本例中的自定義屬性,然後再看它的輸入方式:

     <layout type="JJ.Data.LogCommon.CustomLayout">
        <param name="ConversionPattern" value="%n日誌時間:%d [%t] %n日誌級別:%-5p %n日 誌 類:%c %n%m %n消息描述:%UserID%n" />
     </layout>

  

  消息描述:%UserID,在Log4Net中,%UserID所代表的就是自定義屬性的值,當然,%n是換行,%m就等同於%message,即消息內容,其它的%元素 我就不一一講將解了。可以在網上找到詳細資料。

好了,按照上面的配置,現在自定義屬性也可以輸出到文件中了,是不是很簡單。

  重點強講一下:配置的時候一定要小心,因為很多時候日誌無法正常輸出的原因不是因為代碼的問題,而往往是因為配置中的小錯誤導致的,所以我一直認為Log4Net配置是件可怕的事,一不小心配錯了,就無法正常記錄日誌了。不過它的配置還算是很清晰易懂的。大家剛開始看不懂的時候千萬別急。資料看一下,Layout , appendar 等等配置節的含義,然後再去閱讀Log4Net的配置文件,你會有種豁然開朗的感覺。

Log4Net 之將自定義屬性記錄到文件中 (三)