Log4Net 之將自定義屬性記錄到文件中 (三)
即解決了將自定義屬性記錄到數據庫之後。一個新的想法冒了出來,自定義屬性同樣也能記錄到文件中嗎?答案是肯定的,因為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 之將自定義屬性記錄到文件中 (三)