我想在控制台Logger.fine
上打印之前格式化我的日志消息e.g。如何格式化“{0}有{1}个苹果”,因此输入为John和10
我更喜欢一个日志框架,它提供了一个解决方案,我不想单独格式化这些消息。 JDK6特定的日志记录类似乎没有这些粒度。
答案 0 :(得分:16)
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 :(得分:6)
即使只使用JDK日志记录,您也可以使用自定义Formatter
来处理带参数的日志消息的格式。
对于(一个简单的)例子:
public class MyFormatter extends Formatter {
/**
* @see java.util.logging.Formatter#format(java.util.logging.LogRecord)
*/
@Override
public String format(final LogRecord record) {
return MessageFormat.format(record.getMessage(), record.getParameters());
}
}
然后要使用它,您可以使用以下命令配置logging.properties
文件
java.util.logging.ConsoleHandler.formatter = com.example.MyFormatter
答案 2 :(得分:1)
只需使用String.format
:
String.format
("%s has %s apples with him", "John", "10");