Logback と SLF4J

スポンサーリンク

環境

Ubuntu 12.04.2 (3.5.0-25-generic)
Oracle JDK 7u17
Eclipse Juno (4.2) SR2
Maven 3.0.5

内容

Logback と SLF4J とを Maven プロジェクトで使用するために pom.xml に反映させます.
バージョンは,2013-03-08 時点で最新と思われるもの.

Logback

logback-core

Maven プロジェクトを右クリック – Maven – Add Dependency において,logback-core を検索してみます.
下記を選択します.

ch.qos.logback logback-core
1.0.9 [jar]

pom.xml に反映されます.

    <dependency>
    	<groupId>ch.qos.logback</groupId>
    	<artifactId>logback-core</artifactId>
    	<version>1.0.9</version>
    </dependency>

logback-classic

Maven プロジェクトを右クリック – Maven – Add Dependency において,logback-classic を検索してみます.
下記を選択します.
ch.qos.logback logback-classic
1.0.9 [jar]
pom.xml に反映されます.

    <dependency>
    	<groupId>ch.qos.logback</groupId>
    	<artifactId>logback-classic</artifactId>
    	<version>1.0.9</version>
    </dependency>

アプリケーション実行時にコンソールに下記のようなメッセージが表示される場合,恐らく,logback-classic が適用されていません.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

SLF4J (Simple Logging Facade for Java)

slf4j-api

Maven プロジェクトを右クリック – Maven – Add Dependency において,slf4j を検索してみます.
下記を選択します.

org.slf4j slf4j-api
1.7.2 [jar]

pom.xml に反映されます.

    <dependency>
    	<groupId>org.slf4j</groupId>
    	<artifactId>slf4j-api</artifactId>
    	<version>1.7.2</version>
    </dependency>

logback.xml

ログを出力する設定を XML で設定します.
Maven プロジェクトの場合,例えば,プロジェクトフォルダの下の src/main/resources に作成します.

複数の設定ファイルがある場合,下記の優先度 (上から下) で有効になるようです.

  • logback.groovy
  • logback-test.xml
  • logback.xml

例えば下記のように設定ファイルを使い分けることもできます.

logback-test.xml

開発用途で使用しコンソールにすべてのログを出力する,個々に使用しバージョン管理には含めない,など.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

logback.xml

ログをファイルに出力する,任意のレベル以上あるいは以下のログのみ出力する,バージョン管理に含める,など.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>application.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="FILE" />
    </root>
</configuration>

開発段階は logback-test.xml の方が有効でコンソールでログを確認でき,リリース後は logback.xml の方が有効でファイルにログを出力するといった運用など.

詳しい情報は,The logback manual に記載されています.http://logback.qos.ch/manual/

http://javazuki.wiki.fc2.com/
http://javazuki.wiki.fc2.com/wiki/Logback.xml%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%80%81%E9%81%8B%E7%94%A8%E3%81%99%E3%82%8B
http://javazuki.wiki.fc2.com/wiki/SLF4J%2BLogback?sid=686708b67f5017b03d59443ee372c496

JavaLogbackSLF4J
スポンサーリンク
コピペワールド