2010-01-13 97 views
3

目前我有一個庫將某些信息記錄爲ERROR。如果我改變這樣我的log4j的設置:是否可以在log4j中更改包的日誌級別?

log4j.logger.com.company.theirpackage.foo=OFF 

將完全完全禁用庫的記錄。但是,我真正喜歡的是仍然可以看到這些信息,但是它將以WARN或INFO級別記錄。換句話說,當那個特定的代碼調用log.error()時,我希望它好像他們已經調用了log.warn()log.info()

有沒有辦法做到這一點與log4j?

回答

2

不是直接的,但是你可以編寫一個自定義的appender來攔截調用,檢查關卡,然後在你想要的任何關卡上打印它們。或者,你可以做一些面向方面的編程並攔截/改變他們的調用。

但是,你爲什麼要改變他們登錄的級別?

+0

我們的服務將ERROR視爲一個非常糟糕的事件,而這個庫將各種不重要的事情記錄爲ERROR。我可以改變我們的日誌監視來忽略來自這個包的錯誤,但我寧願這個庫不會記錄像ERROR那樣不重要的東西。 – Ross 2010-01-13 21:25:13

+0

明白了。你是否在使用像Spring這樣的應用程序框架?他們使方面編織非常容易。 – 2010-01-13 21:28:21

1

我認爲這是可能的,通過實施Filter,其中LoggingEvent內的級別在匹配某些條件時發生更改。

+0

你能改變關卡嗎?我不認爲你可以。 – 2010-01-13 22:02:27

+0

沒有setLevel()方法,但可以使用reflection直接設置字段。 – Confusion 2010-01-14 07:43:03

相關問題