広告

Java : ConsoleHandler (ログ) - API使用例

ConsoleHandler (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。


概要

このHandlerは、ログ・レコードをSystem.errに発行します。 デフォルトでは、SimpleFormatterを使って簡単なサマリーが生成されます。

クラス構成

ConsoleHandlerは、ログを

  • コンソール ( 標準エラー出力 : System.err )

へと出力するハンドラです。

関連:ロギング(ログ出力)の基本

final var handler = new ConsoleHandler();

System.out.println(handler.getLevel()); // INFO
System.out.println(handler.getFormatter()); // java.util.logging.SimpleFormatter@6be968ce
System.out.println(handler.getFilter()); // null

final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);

logger.info("TEST LOG!");

// 結果
// ↓
//10月 19, 2022 3:45:23 午後 com.example.logging.ConsoleHandlerTest$1 method
//情報: TEST LOG!

コンストラクタ

ConsoleHandler ()

System.errのConsoleHandlerを作成します。

final var handler = new ConsoleHandler();

System.out.println(handler.getLevel()); // INFO
System.out.println(handler.getFormatter()); // java.util.logging.SimpleFormatter@71a09cc3
System.out.println(handler.getFilter()); // null

final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);

logger.info("TEST LOG!");

// 結果
// ↓
//3月 16, 2022 12:48:10 午後 com.example.logging.ConsoleHandlerTest$1 method
//情報: TEST LOG!

メソッド

void close ()

StreamHandler.closeをオーバーライドし、フラッシュは行うが出力ストリームのクローズは行わないようにします。

ConsoleHandlerの close メソッドは、リソース(System.err)のクローズは行われず、フラッシュのみ行います。

final var handler = new ConsoleHandler();

final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);

logger.info("BEFORE CLOSE LOG!");

handler.close();

logger.info("AFTER CLOSE LOG!");

// 結果
// ↓
//3月 16, 2022 12:53:30 午後 com.example.logging.ConsoleHandlerTest$3 method
//情報: BEFORE CLOSE LOG!
//3月 16, 2022 12:53:30 午後 com.example.logging.ConsoleHandlerTest$3 method
//情報: AFTER CLOSE LOG!

void publish (LogRecord record)

LogRecordを発行します。

final var handler = new ConsoleHandler() {
    @Override
    public synchronized void publish(LogRecord record) {
        // 意図的にメッセージを加工します。
        record.setMessage(record.getMessage() + " : override publish!");

        super.publish(record);
    }
};

final var logger = Logger.getLogger("com.example.logging");
logger.setUseParentHandlers(false);
logger.addHandler(handler);

logger.info("TEST LOG!");

// 結果
// ↓
//3月 16, 2022 12:52:02 午後 com.example.logging.ConsoleHandlerTest$2 method
//情報: TEST LOG! : override publish!

StreamHandlerで宣言されたメソッド

flush, isLoggable, setEncoding, setOutputStream

Java API 使用例 : StreamHandler」をご参照ください。

Handlerで宣言されたメソッド

getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel

Java API 使用例 : Handler」をご参照ください。


関連記事

ページの先頭へ