《LOG4J2官方文件》Chainsaw 可以自動處理你的日誌檔案(通知appender的配置)
對於所有的基於檔案的appender和基於socket的appender,log4j提供通知appender 配置的詳細資訊的功能。例如,基於檔案的appender,檔案地址和格式化輸出日誌資訊都包含在了log4j的通知裡面。Chainsaw和其他外部系統能發現這些通知並聰明地利用這些通知去處理日誌檔案。
這種通知暴露的機制和通知格式是特定於每個通知者實現的,一個與特定通知者實現協作的外部系統必須明白,如何定位通知的配置和通知的格式。例如,一個數據庫通知者可能在資料庫表中儲存了配置的詳細資訊,一個外部系統可以讀取這個資料庫表,發現檔案位置和格式。
log4j提供了一種通知者實現——一個“multicastdns”通知者,運用
- 在配置檔案中設定advertise的配置屬性為”multicastdns”
- 設定appender的advertise屬性為true
- 如果通知FileAppender-based 的配置,要設定appender的屬性”advertiseURI”為一個合適的 URI
基於FileAppender的配置需要額外的指定在appender的 ‘advertiseURI’ 屬性。advertiseURI’ 屬性給Chainsaw提供了怎樣訪問檔案的資訊。例如,通過制定 的Commons VFS (http://commons.apache.org/proper/commons-vfs/) sftp:// URI 的ssh/sftp, 一個檔案可能被chainsaw遠端訪問,當通過web伺服器訪問檔案時,一個http:// URI 可能會被用到,或者用本地執行的Chainsaw例項訪問一個檔案時,制定一個 file:// URI 。
請注意,為了用”multicastdns”來通知,你必須在你的應用路徑加上Jmdns的庫(你可以在http://jmdns.sourceforge.net找到)
- <?xml version=“1.0” encoding=“UTF-8”?>
- <Configuration advertiser=“multicastdns”>
- …
- </Configuration>
- <Appenders>
- <File name=“File1” fileName=“output.log” bufferedIO=“false” advertiseURI=“file://path/to/output.log” advertise=“true”>
- …
- </File>
- </Appenders>