モジュール java.logging
パッケージ java.util.logging

クラスSimpleFormatter


  • public class SimpleFormatter
    extends Formatter
    LogRecordの簡単なサマリーを人が理解できる形式で出力します。 このサマリーは通常、1行か2行になります。

    構成:SimpleFormatterは、ログ・メッセージをフォーマットするために、java.util.logging.SimpleFormatter.formatプロパティで指定されたフォーマット文字列で初期化されます。 このプロパティは、ロギング・プロパティの構成ファイルか、システム・プロパティとして定義されます。 このプロパティがロギング・プロパティとシステム・プロパティの両方で設定されている場合は、システム・プロパティで指定されたフォーマット文字列が使用されます。 このプロパティが定義されていないか、指定されたフォーマット文字列がillegalである場合、デフォルトのフォーマットは実装に固有となります。

    導入されたバージョン:
    1.4
    関連項目:
    Formatter
    • コンストラクタの詳細

      • SimpleFormatter

        public SimpleFormatter()
    • メソッドの詳細

      • 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 - ZoneId.systemDefault()システム時間帯のログ・レコードの「イベント時間」を表すZonedDateTimeオブジェクト。
        3. source - 使用可能な場合は、呼出し元を表す文字列。使用できない場合は、ロガーの名前。
        4. logger - ロガーの名前。
        5. level - ログ・レベル
        6. message - Formatter.formatMessage(LogRecord)メソッドから返された、フォーマットされたログ・メッセージ。 java.textのフォーマットを使用し、java.util.Formatter format引数は使用しません。
        7. thrown - ログ・レコードおよび改行文字で始まるそのバックトレースに関連付けられたthrowableを表現する文字列(存在する場合)。バックトレースがない場合は、空の文字列。

        フォーマット例を示します。

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

          この例では、ログ・レベル(4$)、ログ・メッセージ(5$)、およびタイムスタンプ(1$)を角括弧に囲んで1行で出力します。

               WARNING: warning message [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"

          この例は、1行目にはタイムスタンプ(1$)とソース(2$)、2行目にはログ・レベル(4$)とログ・メッセージ(5$)、使用可能な場合は、その後にスロー可能オブジェクトとそのバックトレース(6$)を含む、2行を出力します。

               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.loggingjava.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 - フォーマットされるログ・レコード。
        戻り値:
        フォーマットされたログ・レコード