logback0.9.11のことはじめ

感想おまちしてます!

log4jの作者が後継としてlogbackを作っていることを知った。
個人的にlog4jはよくできてるなーと勉強させていただいたので、logbackもさっそく実用できるか検証してみる。

以下の記事には作者の言葉もあって面白い。
発展しつつあるJavaのロギング by InfoQ
LOGBackに切り替える10の理由 by パワポ

スポンサーリンク

動かしてみる

logback manualChapter 1: Introduction to logbackを参考に動かしてみる。
logbackはJDK1.5でビルドされていて、動作には以下のライブラリが必要。

  • slf4j-api.jar
  • logback-core.jar
  • logback-classic.jar

slf4jはcommons-loggingの後継として同じ作者が活動しているもの。個人的にはloggerを挿げ替えることってほとんどないので、いらない気がするんだけど必須みたいだ。
サンプルコードは以下になる。

public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(LogBackSamlpe.class.getName());
logger.debug("Hello world.");
}

サンプルではgetLoggerの引数に「”chapter1.HelloWorld1″」とあったので、パッケージ名を含む完全修飾名?がセオリーっぽいのでclass.getNameとしている。他のサンプルでは「TestClass.class」と書いてたりするので、後者のほうが楽。
ログは以下のように出力された。

22:58:10.740 [main] DEBUG c.daipresents.logging.LogBackSamlpe - Hello world.

とっても簡単。

loggerのステータス表示

loggerの状態を出力できるらしい。

public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(LogBackSamlpe.class.getName());
logger.debug("Hello world.");
// print internal state
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}
23:07:30.496 [main] DEBUG c.d.logging.logback.LogBackSamlpe - Hello world.
23:07:30,325 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
23:07:30,325 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
23:07:30,331 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.

アプリ起動時に出すのもアリかなと思う。それよりっも、ログの設定ファイルをテスト時、本番時と自動できりかえることができそうな感じが気になる。これはまた今度調べる。
今回のソースコードはGoogle Code参照のこと。