我想在打印出控制檯之前格式化日誌消息Logger.fine如何格式化我的日誌消息
例如,我如何格式化「{0}有{1}蘋果與他」,所以輸入是約翰和10
我寧願一個日誌框架,它提供了一個解決方案,我不想格式化這些消息分別。 JDK6特定的日誌記錄類似乎沒有這些粒度。
我想在打印出控制檯之前格式化日誌消息Logger.fine如何格式化我的日誌消息
例如,我如何格式化「{0}有{1}蘋果與他」,所以輸入是約翰和10
我寧願一個日誌框架,它提供了一個解決方案,我不想格式化這些消息分別。 JDK6特定的日誌記錄類似乎沒有這些粒度。
String s = MessageFormat.format("{0} has {1} apples with him", "John", 10);
String s = String.format("%1$s has %2$d apples with him", "John", 10);
對於這樣的簡單情況,您可以省略'1 $'和'2 $',並使用'「%s擁有%d個蘋果」的String.format()'。 –
+1爲MessageFormat –
+1爲MessageFormat - 我能夠將所有的日誌語句轉換爲使用MessageFormat將很少的努力 – Julie
只需使用String.format
:
String.format
("%s has %s apples with him", "John", "10");
當直接用於日誌記錄時,String.format會有性能損失 – Suryavanshi
即使只JDK日誌,你可以使用自定義Formatter
處理格式化帶參數的日誌消息。
對於(一個簡單的)例子:如果你使用[SLF4J(HTTP
java.util.logging.ConsoleHandler.formatter = com.example.MyFormatter
:// WWW
然後使用它,你可以配置
logging.properties
文件用。 slf4j.org),你可以寫下:'log.debug(「{} has {} with Apple」,「John」,10);'SLF4J有一個綁定,可以重定向到'java.util.logging'。 –請重新說明問題。令牌化是將一個字符串分解爲組成部分並生成輸出而不是輸入。你的例子表明你問的是如何格式化,而不是標記。 –