我如何能實現以下使用log4j的剪裁下來的日誌輸出:使用log4j的
- 日誌僅事件從一個特定類別的到來,即
com.example.app
但不com.example.app.context
或com.example.dao
; - 記錄級別爲
WARN
或更高的所有事件。
我如何能實現以下使用log4j的剪裁下來的日誌輸出:使用log4j的
com.example.app
但不com.example.app.context
或com.example.dao
;WARN
或更高的所有事件。您需要設置catergory過濾器,將appender閾值設置爲higer過濾器限制。
<appender name="LOG_FILE" class="org.apache.log4j.FileAppender">
<param name="File" value="log_file.log" />
<param name="Threshold" value="WARN"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<category name="com.example.app">
<priority value="DEBUG" />
<appender-ref ref="LOG_FILE" />
</category>
<category name="com.example.app.context">
<priority value="WARN" />
<appender-ref ref="LOG_FILE" />
</category>
在你的log4j.properties文件,你可以設置全局日誌級別有關rootLogger您的應用程序:
log4j.rootLogger=DEBUG, APPENDER
您可以使用WARN,INFO,ERROR和FATAL,而不是DEBUG。
與子包一個包可以給自己的日誌級別,像這樣:
log4j.logger.com.example.app=DEBUG
從其子包刪除記錄,設置其日誌級別的錯誤或致命的:
#log4j.logger.com.example.app.context=ERROR
log4j.logger.com.example.app.dao=ERROR
編輯:註釋掉app.context
行,以便它從其父包中繼承DEBUG級別。
感謝您的回答。然而,我這樣就會失去'com.example.app.context'文件中的<'ERROR'日誌記錄,我想查看 – 2009-11-11 11:36:16
如果您希望'app.context'繼承'app'的日誌級別,只是不要在屬性文件中爲'app.context'放置一個新的日誌級別。你能編輯你的問題,並詳細闡述一下你想要的東西嗎? – rsp 2009-11-11 14:47:46
我認爲要獲取所要求的海報行爲,您需要將com.example.app設置爲WARN並將com.example.app.context設置爲OFF。我不認爲有一種方法可以在每個com.example.app。* off上關閉com.example.app,除非明確重複每個子包。 – 2009-11-10 21:21:12
要關閉子包(到比父級更低的級別,還必須將添加劑設置爲false)。 – Yishai 2009-11-10 21:24:03
感謝您的回答。但是,我這樣就會失去'com.example.app.context'文件中的WARN'日誌記錄,我想查看它。 – 2009-11-11 11:35:45