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

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

確認環境
・Windows10
・JDK 9.0.1/8
・eclipse 4.7/4.6
・logback-classic-1.2.3.jar
・logback-core-1.2.3.jar
・slf4j-api-1.7.25.jar

目次

logback

SLF4j

  • SLF4jは、ログファサード(Facade)ライブラリです。
  • SLF4Jは、ログ出力の抽象層です。あるログから別のログに移行できる設計です(例、java.util.logging、logback、log4j)。
  • 以下は、SLF4jのJavadocとSLF4jのページのリンクです。
    https://www.slf4j.org/apidocs/index.html
    https://www.slf4j.org/

 

1.jarファイルの取得

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

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

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

 

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

logback-classic-1.2.3.jarとlogback-core-1.2.3.jarとslf4j-api-1.7.25.jarをクラスパスに追加します。
クラスパスに追加する手順は、以下を参照願います。
Eclipse 外部jarファイルをクラスパス(ビルドパス)に設定する方法

 

3.設定ファイルの作成

logback.xmlというファイルを作成しコードを記述します。
logback.xmlはなくても動きます。
3行目のpropertyタグは、変数の設定です。nameの値を変数として使用しています。(例:3行目のlogDirは8,11行目で使用されている)
7行目のappenderタグは、ファイル出力の設定です。
20行目のappenderタグは、コンソール出力の設定です。
26行目のrootタグのlevelには、TRACE、DEBUG、INFO、WARN、ERROR、ALL、OFFのいずれかを指定します。小文字でも可です。WARNを設定するとログはWARNとERRORのみ出力されます。
27行目のappender-refは、参照しているアペンダーがロガーに割り当てられます。

<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;
 
class Sample {
 
	private Logger logger = LoggerFactory.getLogger("Sample");
 
	void runSample() {
 
		int a = 1;
		int b = 2;
		String c = null;
 
		logger.trace("trace"); //2017/01/24 18:19:02.512 [main] TRACE Sample trace
		logger.debug("debug"); //2017/01/24 18:19:02.514 [main] DEBUG Sample debug
		logger.info("info: {}", a); //2017/01/24 18:19:02.515 [main] INFO Sample info: 1
		logger.warn("warn: {}{}", a, b); //2017/01/24 18:19:02.516 [main] WARN Sample warn: 12
		logger.error("error: {}", c); //2017/01/24 18:19:02.516 [main] ERROR Sample error: null
 
	}
}
public class Test1 {
	public static void main(String[] args) {
		Sample s = new Sample();
		s.runSample();
	}
}

5.出力ファイルの確認

実行するとコンソールとファイルにログファイル(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でコンソールにログを出力するサンプル

 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る