時代はSLF4Jでlogback

ふぅん。そうか。commons-logging+Log4Jはもう古いのか。。。
http://t100life.blog121.fc2.com/blog-entry-35.html

なんでも、Log4J 徹底解説によると、Log4Jの生みの親が、1.3の開発方針を内部で反対されたことでヤル気なくしちゃって、新たにLogbackを作り始めたのが事の経緯だとか。

ちょっと面白いなwまぁじゃあ試してみるか。

軽く説明

  • SLF4J (Simple Logging Facade for Java) … Commons Logging の後継。
  • LogbackLog4j の後継。

必要なもの

  • slf4j-api-1.5.3.jar   : SLF4Jの本体
  • logback-core-0.9.9.jar    : logbackの本体
  • logback-classic-0.9.9.jar  : logbackとslf4jのブリッジ

SLF4Jプロジェクトサイト←色々jarが入ってるから発掘する
LogBackプロジェクトサイト

設定

logback.xml
連携用はとりあえず動かすなら特にいらず。なんでもクラスパスに通すだけでOKだそうだ

サンプルコード

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogTest{
    private static Logger logger = LoggerFactory.getLogger(Hoge.class);

    public void log(){
        if (logger.isInfoEnabled()) {
            logger.info("hello !");
        }
    }
}
<configuration>
  <appender name="STDOUT"
    class="ch.qos.logback.core.ConsoleAppender">
   <Target>System.out</Target>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</Pattern>
    </layout>
  </appender>

  <logger name="taka.of.master">
    <level value="DEBUG" />
  </logger>

  <root>
    <level value="INFO" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

commong-loggingのときと特にかわらず。何がいいのか?設定ファイルいらないってのはいいけど。
色々調べたらこんなの発見

logger.info("{}さんの年齢は{}ですね","TAKA",new Integer(25));

実行結果

TAKAさんの年齢は25歳ですね

実はこんなメソッド

public void info(String format,Object... arg);

キタコレ可変長引数。これはちょっと便利かも。ちょっと好きになったかもslf4j。

logbackはっつうと。。何かHTMLで吐くとか色々出来るみたいだがあんまりlog4jと変わらないのかな?

他にもいろいろ出来ることはあるみたい。
http://www.nurs.or.jp/~sug/soft/log4j/log4jlb.htm
今度色々調べよう。

以上。