<更新記録>
2008年 2月 27日
執筆

姉妹サイト検索 Web検索


設定の変更

普通にロガーを作成し、そのままログを出力すると、 debugレベルからerrorレベルまで、すべてのログをコンソールに出力する設定になっています。

このふるまいを変更するためには、ロガーの設定を変更します。 ロガーの設定の変更の方法には、XMLファイルに設定を記述し、それを読み込む方法と、 直接Javaプログラム上で設定を変更するためのコードを記述する方法とがあります。

このページでは、設定を変更する例として、ファイルにログを出力する方法を記載します。

ファイルに出力してみる

次に示すコードでは、コンソールとJava実行ディレクトリにlogbacktest.logというファイルそれぞれにログを出力します。

import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.FileAppender;

public class FileAppendTest {

	public static void main(String[] args) {
		Logger logger = (Logger)
			LoggerFactory.getLogger(LoggerContext.ROOT_NAME);
			
		// コメントアウトすると、
		// コンソールには出力されなくなる。
		//logger.detachAndStopAllAppenders();
		
		LoggerContext context = logger.getLoggerContext();
		
		PatternLayout layout = new PatternLayout();
		
		layout.setContext(context);
		layout.setPattern("%-5level [%thread]: %msg %n");
		layout.start();
		
		FileAppender<LoggingEvent> appender = 
			new FileAppender<LoggingEvent>();
		appender.setContext(context);
		appender.setFile("logbacktest.log");
		appender.setEncoding("utf-8");
		appender.setImmediateFlush(true);
		appender.setLayout(layout);
		appender.start();
		
		logger.addAppender(appender);
		
		logger.info("きままにインデックス");
	}
}

手順は、大きく分けて3つ必要です。

  • 1, レイアウト作成
  • 2, ファイルアペンダー作成
  • 3, ロガーにセット

レイアウトは、何でもいいのですが、logbackの作者がサンプルでよく使うPatternLayoutを使いました。 レイアウトは、setPattern(String)メソッドでパターンを指定しますが、 その前にsetContext(LoggerContext)メソッドでコンテキストを設定しなくてはなりません。 パターンを指定したら、start()メソッドを呼び出してスタートしておきます。

そしてファイルに出力するためのファイルアペンダーを作成し、 まずはsetContext(LoggerContext)メソッドでコンテキストを設定します。 その後に諸々の設定を行います。

出力先のファイルはsetFile(String)メソッドでファイルのパスを指定します。 出力の文字符号化方式はsetEncoding(String)メソッドで文字符号化の名前を指定します。

setImmediateFlush(boolean)メソッドは、逐次書き込みをするかどうかを指定します。 trueを指定すると逐次書き込み、falseを指定するか、このメソッドを呼び出さなければ逐次書き込みをしません。 しかし、falseを指定してしまうと、書き込まれないままアプリケーションが終了してしまい、ログが残らないといった問題が発生することがありますので、 速度がやたら必要なアプリケーション以外ではtrueを指定するようにします。

そして出力するフォーマットは、前もって作成しておいたPatternLayoutのインスタンスを指定します。 すべての設定が終了したらstart()メソッドでスタートします。

FileAppenderのインスタンスの設定が終了してスタートしたら、それをロガーのaddAppender(Appender<LoggingEvent>)に指定します。 この直後から、指定されたロガーと、名前的に子供のロガーへのログ書き込み要求が発生したときに、 ファイルにも書き込まれるようになります。

設定では、いろいろとメソッドを呼び出さなければならず、 1つや2つの設定を忘れてしまうこともしばしばあります。 そして原因を突き止めるのに時間が掛かることがあるので、 きちんとファイルにログが表示されない等の異常があった場合、 抜けている手順がないか確認していみましょう。

XMLファイルで設定を変更する

執筆中です。。


Powered by VeryEasyCMS