正如之前的例子所展示的一樣,log4j允許你簡單地重新定義記錄日志的行為而不需要去修改你的應用。可以禁用應用程式的某些部分的日志記錄,隻在滿足特定标準時記錄日志,例如為特定使用者執行的操作,路由輸出到flume或者日志系統。要想實作這些東西必須先了解這個配置檔案的文法。
配置在xml裡面的元素接受這幾個屬性:
元素名稱和描述
advertiser (可選)用于通知單個fileappender或socketappender配置的插件名稱。唯一提供的adverti ser插件是”multicastdns”。
dest 要麼”err”,它将輸出發送到stderr,或檔案路徑或url。
monitorinterval 檢查檔案配置更改之前必須經過的最短時間(以秒為機關)。
name 配置的名稱
packages 以逗号分隔的包名稱清單,用于搜尋插件。每個類加載器隻加載一次插件,是以更改此值可能對重 新配置沒有任何影響。
schema 辨別類加載器找到用于驗證配置的xml模式的位置。僅當strict設定為true時有效。如果未設定, 将不會發生模式驗證。
shutdownhook 不管确認與否,log4j将會自動關閉當jvm關閉的時候。這個關閉hook預設是可用的,可以通過設定屬 性為”disable”來禁用。
status 内部的log4j事件等級會被輸出到控制台上。有效的屬性值分為”trace”, “debug”, “info”, “warn”, “error” 和 “fatal”。log4j将會把初始化,復原和其他内部活動記錄到狀态記錄器裡。設 置status=”trace”是其中一種提供的第一件工具,如果你需要解決這個log4j的問題。
strict 啟用嚴格的xml文法使用。在json的配置裡不支援。
verbose 在加載插件時啟用診斷資訊。
log4j可以使用兩種xml風格進行配置;簡潔和嚴謹。簡潔的格式使配置很容易,因為元素名稱比對它們表示的元件,但是它不能用xml模式驗證。例如,consoleappender通過在其父appenders元素下聲明名為console的xml元素來配置。但是,元素和屬性名稱不區分大小寫。此外,屬性可以指定為xml屬性,也可以指定為沒有屬性且具有文本值的xml元素。是以
<patternlayout pattern=”%m%n”/>
和
<patternlayout>
<pattern>%m%n</pattern>
</patternlayout>
是相等的。
下面的檔案表示xml配置的結構,注意,下面的斜體元素表示将出現在其位置的簡化元素名稱。
<code><?xml version="1.0" encoding="utf-8"?>; <configuration> <properties> <property name="name1">value</property> <property name="name2" value="value2"/> </properties> <filter ... /> <appenders> <appender ... > <filter ... /> </appender> ... </appenders> <loggers> <logger name="name1"> <filter ... /> </logger> ... <root level="level"> <appenderref ref="name"/> </root> </loggers> </configuration></code>
可以在本頁面裡的sample appender, filter 和 logger declarations。檢視更多的例子。