2014-11-04 55 views
0

我被要求格式化記錄程序消息,以便它們顯示在一行上。問題是記錄器具有編程定義的處理程序,我不能更改其中的任何一個。即使在logp方法內的記錄器類中定義了語法,是否可以覆蓋.properties文件中日誌消息的格式?我很抱歉無法提供代碼。我已經嘗試創建一個自定義的格式化程序,並指向logger.properties文件中的這個,但這些更改是不可見的。在logger.properties文件中設置自定義用戶定義的格式化程序

感謝, 丹尼爾

回答

0

我一直在問,讓他們展示在一行來格式化記錄器的消息。

如果它們被全部使用SimpleFormatter然後讀取在API文檔的example和作爲SimpleFormatter類級別文檔中描述通過系統性能或logging.properties配置它。

是否有可能覆蓋.properties文件中的日誌消息的格式,即使logp方法中的記錄器類中定義了該語法?

記錄器正在做的唯一格式是參數化消息格式參數的順序。如果你想改變格式,你應該使用localization和參數化日誌記錄。然後,您可以通過提供不同的resource bundles(每個版本)換出不同的格式,這允許您更改每種類型的消息密鑰的格式。但是,這只是格式化LogRecord消息和參數。其餘的在格式化程序中進行控制。

我已經嘗試創建一個自定義的格式化程序,並指向logger.properties文件中的這個,但更改不可見。

logging.properties在編程定義的處理程序安裝之前執行。請致電LogManager.readConfiguration或代碼運行後。請記住,這將撤消正在設置的編程定義的處理程序。然而,這可能不會幫助你,因爲如果你能夠編寫代碼來觸發重新配置,你可以編寫代碼來安裝格式化程序到編程定義的處理程序。

+0

你的意思是調用getRegisteredHandlers,然後將我的自定義格式化程序添加到它們中的每一個?爲Logger.getLogger(「some.logger.name」)。getHandlers()中的每個Handler設置 – 2014-11-14 18:03:24

+0

。 handler.setFormatter(新的CustomFormatter())。 – jmehrens 2014-11-17 16:35:03

相關問題