Java日志记录:格式化程序

时间:2020-01-09 10:36:44  来源:igfitidea点击:

Java Logging API中的"处理程序"使用java.util.logging.Formatter来格式化LogRecord,然后再将其写入外部系统。

Java带有两个内置的Formatter(Formatter的子类):

  • SimpleFormatter
  • XMLFormatter

Java Logging API中的各种Handler默认情况下都使用这两个Formatter中的任何一个,但是我们也可以在Handler上设置自己的自定义Formatter子类。

我们可以通过子类化java.util.logging.Formatter类来创建自己的Formatter。这是一个简单的示例:

public class MyFormatter extends Formatter {

    @Override
    public String format(LogRecord record) {
        return record.getLevel() + ":" + record.getMessage();
    }
}

子类必须重写Formatter类中的抽象format方法。由format()返回的String是由Handler转发给外部系统的东西。字符串的确切格式由我们决定。

Formatter类还包含便利方法formatMessage(),该方法可用于通过LogRecordResourceBundle格式化消息。这是一个例子:

public class MyFormatter extends Formatter {

    @Override
    public String format(LogRecord record) {
        return formatMessage(record);
    }
}

我们通常不需要实现自己的Formatter,而是偶尔需要特定的日志格式,则自定义Formatter可能会有用。