2022年5月21日土曜日

java.util.logging.Loggerでログ出力(log4jを使わないで)

log4jの例のアレでlog4jのjarが入っているだけで文句言われたので…。
log4jを使わないでロギングする方法のメモ。(java17環境で確認)

1. jdkディレクトリのconfに入っているlogging.propertiesをプロジェクトにコピーする。
デフォルトだとHandlersがConsoleHandlerだけなので、FileHandlerを追加してファイルに出力するように設定する。
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler
2. FileHandlerのformatterがXMLFormatterになっているので、SimpleFormatterを設定する。
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
3. ファイルの出力先がユーザのホームディレクトリ直下に出力するようになっているので適当に変更する。
java.util.logging.FileHandler.pattern = logtest.log
4. コードを実装。(以下のサンプルは"logging.properties"がカレントディレクトリにある想定。)
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class Main {

    static Logger myLogger = Logger.getLogger("MyLogger");
    static {
        try(InputStream is = Files.newInputStream(Paths.get("logging.properties"))){
            LogManager.getLogManager().readConfiguration(is);
        }catch(IOException e) {
            System.err.println("Failed to read configration file");
            System.exit(1);
        }
    }
    public static void main(String args[]) {
        myLogger.log(Level.INFO, "Info level log");
    }
}

0 件のコメント:

コメントを投稿