SLF4J+Logbackの導入

Pocket

SLF4JはFacadeライブラリで、Logbackはロガー実装。
SLF4Jをダウンロードしてきて次のjarをクラスパスに通す。

  • slf4j-api-1.6.1.jar

Logbackをダウンロードしてきて同様に次のjarをクラスパスに通す。

  • logback-core-0.9.27.jar
  • logback-classic-0.9.27.jar

coreは文字通りコアライブラリでこれがないとLogbackが動きません。
classicはslf4jのバインディングに必要な実装が入っている(?)らしい。
以下ようなlogback.xmlを書いてクラスパスの通ったディレクトリに放りこみます。下記の例ではカレントディレクトリのlog/development.logにもログを出力する設定にしています。
logback.xmlにはシステムプロパティも書き込めるみたいです。
Chapter 3: Configuration

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${user.dir}${file.separator}log${file.separator}development.log</file>

    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are  by default assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

で、ログを出したいクラスに

// フィールドにloggerを取得
final Logger logger = LoggerFactory.getLogger(HelloWorld.class);
// ログ
logger.info("hello, world.");

今日、Javaのシステムプロパティっていうのを知ったのですが、すごくいいですね。今までxmlファイルとかに${catalina.home}とか書いてあって、「これどこで定義してるんだろう?」って思っていたのですが、これでログファイルの出力先を絶対パスで書かなくてよくなりました。

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください