2015-10-05 60 views
0

我正在使用java.util.logging爲我的應用程序創建日誌文件。迄今爲止效果很好。
現在我有問題,info()方法只需要一個字符串作爲參數。但是我有不同的數據類型來記錄,f.e.整數,雙精度,自定義對象。 我知道我可以自己構建字符串,我使用String.format等。 而且我也知道我可以使用log()方法。但是在這裏我必須每次都設置日誌級別並創建一個Object數組。具有不同數據類型的日誌消息

我在找什麼東西,我可以設置一個全局日誌級別(一次),然後調用這樣的方法:

log.info(String message, Object... values); 

有它支持的框架?

+2

詢問框架將產生大多數基於意見的答案,並被認爲是脫離主題,但看看slf4j或log4j。 – Fildor

回答

2

是有,這就是所謂的slf4j和您正在尋找的特定API是這一個 org.slf4j.Logger#info(java.lang.String, java.lang.Object...)

當INFO級別的記錄器 被禁用時,此表格避免了多餘的字符串連接。但是,即使此記錄器對INFO禁用,此變體也會在調用方法 之前創建隱藏的 (且相對較小)的代價來創建Object[]。爲了避免這種隱藏成本,變量只存在於其中。這些變體只存在於其中。

你應該在SLF4J文檔頁面

我們JCL在SLF4J實施將使你遷移到逐漸SLF4J,一看jcl-over-slf4j.jar特別是如果你的一些軟件依賴於不斷的庫在可預見的將來使用JCL。您可以立即享受SLF4J的可靠性優勢,同時保持向後兼容性。只需用jcl-over-slf4j.jar替換commons-logging.jar

2

看一看SLF4j/logback,那裏你可以寫類似

LOGGER.info("log output var1={} var2={}",var1,var2); 

在日誌信息的{}將由參數被替換:

15:41:28.551 [main] INFO d.h.s.Main - log output var1=abc var2=123.45