Layouts控制日誌顯示的格式樣式。日誌的顯示格式以下:
"%timestamp [%thread] %-5level %logger - %message%newline"
Timestamp: 表示程序已經開始執行的時間。 單位[毫秒]。
Thread:執行當前代碼的線程。
Level:日誌的級別。
Logger:日誌相關請求的名稱。
Message: 日誌消息。 app
%m(message):輸出的日誌消息,如ILog.Debug(…)輸出的一條消息
%n(new line):換行
%d(datetime):輸出當前語句運行的時刻
%r(run time):輸出程序從運行到執行到當前語句時消耗的毫秒數
%t(thread id):當前語句所在的線程ID
%p(priority): 日誌的當前優先級別,即DEBUG、INFO、WARN…等
%c(class):當前日誌對象的名稱
%L:輸出語句所在的行號
%F:輸出語句所在的文件名
%-數字:表示該項的最小長度,若是不夠,則用空格填充 dom
1PatterLayout格式化字符表ide
轉換字符性能 |
效果測試 |
aspa |
等價於appdomain線程 |
appdomain調試 |
引起日誌事件的應用程序域的友好名稱。(使用中通常是可執行文件的名字。)日誌 |
corm |
等價於 logger |
C |
等價於 type |
class |
等價於 type |
d |
等價於 date |
date |
發生日誌事件的本地時間。 使用 DE>%utcdate 輸出UTC時間。date後面還能夠跟一個日期格式,用大括號括起來。DE>例如:%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 名爲 "a.b.c", 輸出模型爲%logger{2} ,將輸出"b.c"。 |
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添加到時間中的。 有一個默認的屬性"DE>log4net:HostName"老是會有。DE> %property將輸出全部的屬性 。 (擴展後能夠使用)
|
r |
等價於 timestamp |
t |
等價於 thread |
timestamp |
從程序啓動到事件發生所通過的毫秒數。 |
thread |
引起日誌事件的線程,若是沒有線程名就使用線程號。 |
type |
引起日誌請求的類的全名。. 能夠使用精度控制符。例如: 類名是 "log4net.Layout.PatternLayout", 格式模型是%type{1} 將輸出"PatternLayout"。(也是從右開始的。) 警告:會影響性能。 |
u |
等價於 identity |
username |
當前用戶的WindowsIdentity。(相似:HostName/Username) 警告:會影響性能。 |
utcdate |
發生日誌事件的UTC時間。DE>後面還能夠跟一個日期格式,用大括號括起來。DE>例如:%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 |
% |
%%輸出一個百分號 |