如何格式化我的日志消息

新手上路,请多包涵

我想在打印到控制台 Logger.fine 之前格式化我的日志消息

例如,如何格式化“{0} 有 {1} 个苹果”,所以输入是 John 和 10

我更喜欢一个提供解决方案的日志记录框架,我不想单独格式化这些消息。 JDK6 特定的日志记录类似乎没有这些粒度。

原文由 Jason 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 418
2 个回答

使用 消息格式

 String s = MessageFormat.format("{0} has {1} apples with him", "John", 10);

String.format

 String s = String.format("%1$s has %2$d apples with him", "John", 10);

原文由 JB Nizet 发布,翻译遵循 CC BY-SA 3.0 许可协议

即使只有 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

原文由 Alistair A. Israel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题