Module java.logging

Class SimpleFormatter

java.lang.Object
java.util.logging.Formatter
java.util.logging.SimpleFormatter

public class SimpleFormatter extends Formatter
打印LogRecord的简要摘要,以人类可读的格式。摘要通常为1或2行。

配置: SimpleFormatter 使用在java.util.logging.SimpleFormatter.format属性中指定的格式字符串进行初始化,以格式化日志消息。此属性可以在日志属性配置文件或系统属性中定义。如果此属性在日志属性和系统属性中都设置了,将使用系统属性中指定的格式字符串。如果未定义此属性或给定的格式字符串是非法的,则默认格式是特定于实现的。

自从:
1.4
参见:
  • Constructor Details

    • SimpleFormatter

      public SimpleFormatter()
      创建一个SimpleFormatter
  • Method Details

    • format

      public String format(LogRecord record)
      格式化给定的LogRecord。

      可以通过在 java.util.logging.SimpleFormatter.format属性中指定格式字符串来自定义格式化。给定的LogRecord将被格式化,就好像调用:

          String.format(format, date, source, logger, level, message, thrown);
       
      其中参数为:
      1. format - 在java.util.logging.SimpleFormatter.format属性中指定的java.util.Formatter格式字符串或默认格式。
      2. date - 表示日志记录的事件时间的ZonedDateTime对象,使用ZoneId.systemDefault()系统时区。
      3. source - 表示调用者的字符串,如果可用;否则为记录器的名称。
      4. logger - 记录器的名称。
      5. level - 日志级别
      6. message - 从Formatter.formatMessage(LogRecord)方法返回的格式化日志消息。它使用java.text格式化,不使用java.util.Formatter format参数。
      7. thrown - 表示与日志记录关联的可抛出对象及其回溯,如果有的话以换行字符开头;否则为空字符串。

      一些示例格式:

      • java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"

        这将打印1行,包括日志级别(4$)、日志消息(5$)和时间戳(1$)在方括号中。

             警告: 警告消息 [Tue Mar 22 13:11:31 PDT 2011]
             
      • java.util.logging.SimpleFormatter.format="%1$tc %2$s%n%4$s: %5$s%6$s%n"

        这将打印2行,第一行包括时间戳(1$)和来源(2$);第二行包括日志级别(4$)和日志消息(5$)后跟可抛出对象及其回溯(6$),如果有的话:

             Tue Mar 22 13:11:31 PDT 2011 MyClass fatal
             SEVERE: several message with an exception
             java.lang.IllegalArgumentException: invalid argument
                     at MyClass.mash(MyClass.java:9)
                     at MyClass.crunch(MyClass.java:6)
                     at MyClass.main(MyClass.java:3)
             
      • java.util.logging.SimpleFormatter.format="%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%n"

        这将打印2行,类似于上面的示例,使用不同的日期/时间格式,并不打印可抛出对象及其回溯:

             Mar 22, 2011 1:11:31 PM MyClass fatal
             SEVERE: several message with an exception
             
      • java.util.logging.SimpleFormatter.format="%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS.%1$tN %1$Tp %2$s%n%4$s: %5$s%6$s%n"

        自JDK 9起,java.util.logging使用java.time创建更精确的时间戳。上面的格式可以用于在日期/时间格式化中添加.%1$tN,以便打印纳秒:

             Feb 06, 2015 5:33:10.279216000 PM example.Main main
             INFO: This is a test
             

      此方法也可以在子类中重写。建议使用Formatter.formatMessage(java.util.logging.LogRecord)便捷方法来本地化和格式化消息字段。

      指定者:
      format 在类 Formatter
      参数:
      record - 要格式化的日志记录。
      返回:
      格式化的日志记录