Java LogbackとSLF4jでテキストにログを出力するサンプル

LogbackとSLF4jとxmlの設定ファイルを使用してテキストファイルにログを出力するサンプル(手順)です。

実行環境
・Windows10
・eclipse4.6
・logback-classic-1.1.9.jar
・logback-core-1.1.9.jar
・slf4j-api-1.7.22.jar

1.jarファイルの取得

下記のサイトからlogback-1.1.9.zipをダウンロードします。

Logbackのサイト
https://logback.qos.ch/download.html

ダウンロードしたzipを展開し以下のファイルを任意の場所に配置します。
logback-classic-1.1.9.jar
logback-core-1.1.9.jar
logback-examples/lib/slf4j-api-1.7.22.jar

2.jarファイルをクラスパス(ビルドパス)に追加

logback-classic-1.1.9.jarとlogback-core-1.1.9.jarとslf4j-api-1.7.22.jarをクラスパスに追加します。
クラスパスに追加する手順は、
Eclipse 外部のjarファイルを使うためのクラスパス(ビルドパス)の設定手順参照。

3.設定ファイルの作成

logback.xmlというファイルを作成しコードを記述します。
logback.xmlはなくても動きます。
3-5行目のpropertyタグにあるnameの値は変数として使用しています。(例:3行目のlogDirは8,11行目で使用されている)

<configuration>
 
  <property name="logDir" value="./logs/" />
  <property name="fileName" value="testlog.log" />
  <property name="format1" value="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %c{10} %m%n" />
 
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logDir}${fileName}</file>
    
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${logDir}${fileName}.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>1</maxHistory>
    </rollingPolicy>
    
    <encoder>
      <pattern>${format1}</pattern>
    </encoder>
  </appender>
 
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${format1}</pattern>
    </encoder>
  </appender>
 
  <root level="trace">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

完成したらlogback.xmlをビルドパスに通します。
※以下はビルドパスを通す一つのやり方です。
(フォルダを作成してそのフォルダにビルドパスを追加しその中にlogback.xmlを置きます。
フォルダを作成してビルドパスを追加する方法は
Eclipse フォルダを作成してビルドパスに設定する手順参照。)

4.ソースコードの作成

以下のコードを記述します。

package test1;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * Logback slf4j ログを出力するサンプル
 */
class Sample {
 
	private Logger logger = LoggerFactory.getLogger("Sample");
 
	void runSample() {
 
		int a = 1;
		int b = 2;
		String c = null;
 
		logger.trace("trace");
		logger.debug("debug");
		logger.info("info: {}", a);
		logger.warn("warn: {}{}", a, b);
		logger.error("error: {}", c);
 
	}
}
 
public class Test1 {
	public static void main(String[] args) {
		Sample s = new Sample();
		s.runSample();
	}
}

5.実行結果の確認

上記コードを実行して確認します。
設定ファイル(logback.xml)で指定したファイル(testlog.log)が存在しない場合は新規にファイル(testlog.log)が作成されログが書き込まれます。
設定ファイル(logback.xml)で指定したファイル(testlog.log)が存在する場合は、追記でログが書き込まれます。

ファイルの中身は以下の通りです。

2017/01/24 18:19:02.512 [main] TRACE Sample trace
2017/01/24 18:19:02.514 [main] DEBUG Sample debug
2017/01/24 18:19:02.515 [main] INFO Sample info: 1
2017/01/24 18:19:02.516 [main] WARN Sample warn: 12
2017/01/24 18:19:02.516 [main] ERROR Sample error: null

関連の記事

Java log4j2でテキストにログを出力するサンプル
Java log4j 1.2でテキストにログを出力するサンプル(設定ファイルがテキスト)
Java log4j 1.2でテキストにログを出力するサンプル(設定ファイルがxml)
Java log4j 1.2でコンソールにログを出力するサンプル




△上に戻る