ksaitoの日記

日々試したことの覚え書き

JavaのLogger

移転しました。

自動的にリダイレクトします。

JavaのログAPIといえばApache Log4jですが、ちょっとしたプログラムを作るときには、追加のライブラリが必要ないJava標準のLoggerも便利です。

設定ファイルから出力を制御する

下記のようにLoggerをセットアップするとソースコードのルートディレクトリのlogger.propertiesを読み込んでLoggerをセットアップできます。

import java.io.*;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class QuizAnswer {
	private static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

	public static void main(String[] args) throws SecurityException, IOException {
		setup();
		logger.info("Hello, world!");
	}

	public static void setup() throws SecurityException, IOException {
		String path = "/logging.properties";
		InputStream in = null;
		try {
			in = QuizAnswer.class.getResourceAsStream(path);
			LogManager.getLogManager().readConfiguration(in);
			logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
		} finally {
			if (in != null) in.close();
		}
	}
}

設定ファイル

設定ファイルでは、パッケージやクラスごとに出力レベルを指定することができます。
プロパティファイルにハンドラーを指定することで出力先をコンソールやファイルに切り替えられます。
メッセージのフォーマットもFormatterを実装して指定することで自由に変えることができます。

handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
.level = WARNING