前回 commons-logging の基礎的な使い方を見ました。
で、Maven2 プロジェクトで実際に使ってみました。 POM ファイルは以下の通り:
<?xml version="1.0"?> <project> ... <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1</version> </dependency> </dependencies> </project>
このプロジェクトで、次のようなテスト・クラス
import junit.framework.TestCase; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class CommonsLoggingTest extends TestCase{ private static Log LOG = LogFactory.getLog(CommonsLoggingTest.class); public void test(){ LOG.trace("trace"); LOG.debug("debug"); LOG.info("info"); LOG.warn("warn"); LOG.error("error"); LOG.fatal("fatal"); } }
を作成してテストを実行してみると、
log4j:WARN No appenders could be found for logger (CommonsLoggingTest).
log4j:WARN Please initialize the log4j system properly.
ってな警告メッセージが出て、コンソールにログ出力がされませんでした。 警告メッセージからして、log4j に問題があるようです。
どちらも「設定が足りない」的な警告だけど、「ちょっと使いたい」ってときにイチイチ設定ファイルを書くのは面倒*1。 なので、(ロギング・コンポーネントの)設定を書かずにロギングが出来る方法を考えてみましょう(log4j を使う方法は後日)。
log4j を依存性から除外する
common-logging はもともと log4j がなくても動作するコンポーネントなので、log4j に問題があるならそれを使わないようにすれば良いでしょう。 なので、POM ファイルを少々書き換えて、log4j への依存性を消してしまいましょう:
<?xml version="1.0"?> <project> ... <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1</version> <!-- log4j を読み込まないようにする設定 --> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </project>
この設定で上記のテストを実行すると
2007/08/30 11:49:47 CommonsLoggingTest test
情報: info
2007/08/30 11:49:47 CommonsLoggingTest test
警告: warn
2007/08/30 11:49:47 CommonsLoggingTest test
致命的: error
2007/08/30 11:49:47 CommonsLoggingTest test
致命的: fatal
と出力されてキチンと動きました。 ちなみにここで使用された Log インターフェースの実装クラスは org.apache.commons.logging.impl.Jdk14Logger です。
commons-logging のバージョンを下げる
commons-logging の以前のバージョンでは、特に設定をせずにログ出力が出来てました。 具体的には1.0.2以前のバージョンです。 バグ・フィックスの観点から、不必要に昔のバージョンのライブラリを使うのは良くないかと思いますが。
ちなみに、commons-logging は最新バージョンの1.1を使用して、log4j は設定の必要がないバージョンの1.1.3を使用しようとすると*2、log4j は認識されないようです。 org.apache.commons.logging.impl.Jdk14Logger が使用されました。
java.util.logging を使う
commons-logging に特に思い入れがない方は、J2SE 1.4 (Java SE 4 ?) から追加された標準 API のパッケージ java.util.logging 内のクラスを使うと良いかと思います。
- 何てったって「標準 API」。
- ライブラリへの依存性を考えなくて良い。
- 簡単に使う分には commons-logging と使い方が大して違わない。
などの利点があります。 簡単な使い方は、また機会があれば・・・
- 作者: WINGSプロジェクト佐藤匡剛,山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2006/11/29
- メディア: 大型本
- 購入: 17人 クリック: 227回
- この商品を含むブログ (57件) を見る