が、それはいかがなものかというコンセプトの commons-logging を使ってみました。
commons-loggingを使うと、どうもこういうことらしい。
- Loggerの実装(例えばlog4j)の選択を後回しにして、でもアプリケーションの実装には着手できます。
- プロパティファイルの変更(など)だけで、Loggerの実装を変更できます。
自分のPCを探してみると結構 commons-logging は使われていました。
(正確に言うと同梱していました。)
- Oxygen XML Editor
- DITA Open Toolkit
- Ant
◆Javaコード:App.java
-----------------------------
package com.hisagisoft.tomorrowscode.logger;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class App {
private static final Log log = LogFactory.getLog(App.class);
public static void main( String[] args ){
log.info("this is log.");
System.out.println( "Hello World!" );
}
}
-----------------------------
◆プロパティファイル:commons-logging.properties
-----------------------------
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
-----------------------------
◆プロパティファイル:log4j.properties
-----------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c(%L) - %m%n
log4j.appender.null=org.apache.log4j.varia.NullAppender
log4j.rootLogger=debug, null
log4j.logger.com.hisagisoft=debug, stdout
-----------------------------
◆これらの配置
◆実行(NetBeans上で、です)
------------------------------
run:
2011-01-15 20:41:30,062 [main] INFO com.hisagisoft.tomorrowscode.logger.App(15) - this is log.
Hello World!
構築成功 (合計時間: 0 秒)
------------------------------
◆結論
手に入るときは使うようにします。
ではまた。
お疲れさまです、師匠。
返信削除これって、下記の二つを指定しないといけないんですよね?
1) org.apache.commons.logging.Log プロパティ: Log4J のクラス名
2) クラスパス: Log4J の JAR ファイルのパス
2 の情報があれば 1 の情報はなくてもいいような気がする (むしろ省略したい) のですが、
そういう訳にはいかないのでしょうか?
# JAXP では 1 の情報を省けたような……
> 2 の情報があれば 1 の情報はなくてもいいような気がする (むしろ省略したい) のですが、
返信削除> そういう訳にはいかないのでしょうか?
1の情報は省略できます。そういう選択もできます。
自分は結構「明示したい派」なので書いちゃいました。
これもひとつのドキュメンテーションというか。
後任者にいち早くcommons-logging ≫ log4jの関連に気がついて欲しいという・・・クセですね、これはもう。(笑)