2011-08-23 104 views
0

我需要更改我們的日誌格式。java記錄器動態更改字段

現在的日誌是這樣的:

[Thread ID] TIME ClassName 
Content 

我需要在頭部添加一個字段,並且只能在記錄時間來確定這一領域:

[Thread ID] TIME ClassName NewField 
Content 

這裏的時候,我們需要記錄一些東西,我們要添加一個動態變化的字段,這是一個系統相關的信息。

我不能輕易將它移動到內容的開頭,因爲通過這種方式,我需要更改所有調用logger.warning或logger.info等的位置。

對於後面的代碼有一個共同的地方(入口點),我可以在這裏設置這個新字段的值。稍後,當logger.warning(「XXX」)被調用時,它可以識別該值。

我可以做到這一點嗎?

+0

這是使用'java.util.logging'還是其他一些日誌庫? –

+0

@Jarrod Roberson它正在使用util.logging – performanceuser

+0

什麼樣的數據完全進入_NewField_?它是來自應用程序還是環境的系統相關信息? –

回答

1

也許你可以通過繼承/創建您自己的Logger,LogRecordFormatter的實現來實現。 Logger將獲得您設置的額外字段,並且在記錄日誌時還將其添加到LogRecord中。格式化程序應該注意在標題中包含該值。

如果NewField是環境中的東西,你可以看看是否有辦法用log4j做到這一點。

無論如何,你都會重構。很可能的情況是,只需找到所有的info(),warn()等方法並在此處添加信息即可。

+0

在log4j中,[映射診斷上下文](http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html)可能是您想要的。 – prunge