- 輸出訊息,訊息有五種等級由低而高為Debug、Info、Warn、Error、Fatal,訊息要輸出那一等級的訊息,由<root>裡的<level>設定,如果設定檔設為INFO,則所有大於等於INFO的訊息都會輸出。
寫入文字檔
- 官方說明文件
- appender 標籤 - 輸出格式的設定
1. type: 輸出類型,例如 ConsoleAppender 為主控台輸出、RollingFileAppender 為文字檔輸出
2. file: 輸出檔案的路徑位置
3. layout: 記錄的格式設定 - logger 標籤 - 記錄器,可自訂設定屬性(可多個)
1. level: 記錄級別設定
2. appender-ref: 指定參考的Appender設定 - root logger 標籤 - 為根記錄器,當其他記錄器執行完後最後會執行根記錄器(唯一)
Logger Level - 等級由高向低排序
- Off :表示最高的等級,如果一個logger的等級標記為Off,將不會記錄任何信息;
- Fatal :表示非常嚴重的錯誤等級,記錄極有可能導致應用程序終止運行的致命錯誤信息;
- Error :表示較嚴重的錯誤等級,但是程序可以繼續運行的信息;
- Warn :表示可能對系統有損害的情況;
- Info :默認的等級,當日誌等級配置為Info時,真正的等級不一定是Info,而是LoggerRepository.LevelMap["INFO"],雖然這個默認值是Info,但是可以通過重新配置日誌等級映射來改變;
- Debug :這個等級表示用於調試程序的正常的事件信息;
- All :表示最低的日誌等級。
PatterLayout的格式化字符串:
| Conversion Pattern Name | Effect |
|---|---|
| a | 等價於appdomain |
| appdomain | 引發日誌事件的應用程序域的友好名稱。(我在使用中一般是可執行文件的名字。) |
| c | 等價於 logger |
| C | 等價於 type |
| class | 等價於 type |
| d | 等價於 date |
| date |
發生日誌事件的本地時間。使用
%utcdate輸出UTC時間。date後面還可以跟一個日期格式,用大括號括起來。例如:%date{HH:mm:ss,fff}或者%date{dd MMM yyyy HH:mm:ss,fff}。如果date後面什麼也不跟,將使用ISO8601格式。
日期格式和.Net中DateTime類的ToString方法中使用的格式是一樣。
另外log4net還有3個自己的格式Formatter。它們是"ABSOLUTE", "DATE"和"ISO8601"分別代表 AbsoluteTimeDateFormatter ,DateTimeDateFormatter和Iso8601DateFormatter。例如:%date{ISO8601}或%date{ABSOLUTE}。
它們的性能要好於ToString。
|
| exception |
異常信息
日誌事件中必須存了一個異常對象,如果日誌事件不包含沒有異常對象,將什麼也不輸出。異常輸出完畢後會跟一個換行。一般會在輸出異常前加一個換行,並將異常放在最後。
|
| F | 等價於 file |
| file |
發生日誌請求的源代碼文件的名字。
警告:只在調試的時候有效。調用本地信息會影響性能。
|
| identity |
當前活動用戶的名字(Principal.Identity.Name).
警告:會影響性能。(我測試的時候%identity返回都是空的。)
|
| l | 等價於 location |
| L | 等價於 line |
| location |
引發日誌事件的方法(包括命名空間和類名),以及所在的源文件和行號。
警告:會影響性能。沒有pdb文件的話,只有方法名,沒有源文件名 和行號。
|
| level |
日誌事件等級
|
| line |
引發日誌事件的行號
警告:會影響性能。
|
| logger |
記錄日誌事件的Logger對象的名字。
可以使用精度說明符控制Logger的名字的輸出層級,默認輸出全名。
注意,精度符的控制是從右開始的。例如:logger名為"abc",輸出模型為%logger{2} ,將輸出"bc"。
|
| m | 等價於 message |
| M | 等價於 method |
| message |
由應用程序提供給日誌事件的消息。
|
| mdc |
MDC (舊為:ThreadContext.Properties)現在是事件屬性的一部分。保留它是為了兼容性,它等價於 property。
|
| method |
發生日誌請求的方法名(只有方法名而已)。
警告:會影響性能。
|
| n | 等價於 newline |
| newline |
換行符
|
| ndc |
NDC (nested diagnostic context)
|
| p | 等價於 level |
| P | 等價於 property |
| properties | 等價於 property |
| property |
輸出事件的特殊屬性。例如: %property{user} 輸出user屬性。屬性是由loggers或appenders添加到時間中的。有一個默認的屬性"
log4net:HostName"總是會有。
%property將輸出所以的屬性。
(我除了知道可以用它獲得主機名外,還不知道怎麼用。)
|
| r | 等價於 timestamp |
| t | 等價於 thread |
| timestamp |
從程序啟動到事件發生所經過的毫秒數。
|
| thread |
引發日誌事件的線程,如果沒有線程名就使用線程號。
|
| type |
引發日誌請求的類的全名。.
可以使用精度控制符。例如:類名是"log4net.Layout.PatternLayout",格式模型是 %type{1} 將輸出"PatternLayout"。(也是從右開始的。)
警告:會影響性能。
|
| u | 等價於 identity |
| username |
當前用戶的WindowsIdentity。(類似:HostName/Username)
警告:會影響性能。
|
| utcdate |
發生日誌事件的UTC時間。
後面還可以跟一個日期格式,用大括號括起來。例如:%utcdate{HH:mm:ss,fff}或者%utcdate{dd MMM yyyy HH:mm:ss,fff}。如果utcdate後面什麼也不跟,將使用ISO8601格式。
日期格式和.Net中DateTime類的ToString方法中使用的格式是一樣。
另外log4net還有3個自己的格式Formatter。它們是"ABSOLUTE", "DATE"和"ISO8601"分別代表 AbsoluteTimeDateFormatter ,DateTimeDateFormatter和Iso8601DateFormatter。例如:%date{ISO8601}或%date{ABSOLUTE}。
它們的性能要好於ToString。
|
| w | 等價於 username |
| x | 等價於 ndc |
| X | 等價於 mdc |
| % |
%%輸出一個百分號
|
參考資料:
沒有留言:
張貼留言