log4jとcommons-logging でログをだす。
Javaでログといえばlog4jだが、とてもわかりにくい。
というか、わからん。つかっているけど、いつまでたってもわからん。
最近ようやく、log4jとcommons-loggingを一緒に使うと便利らしい知る。
≪いるもの≫
log4j.jar
commons-logging.jar
≪やり方≫(eclipse前提かつWebアプリより)
【1】jarはWebアプリなら WEB-INF/libとかにいれて、クラスパスにいれとく。
【2】ログ用クラスを書く
log4jの使い方を説明しているサイトは、たいてい汎用的でないログの説明しかしていないぞ!
ヲれはすぐにつかえるねたほしいんだ!←低レベル
MyLoggerクラスの場合
(1)クラスをつくる
(2)以下のように書く
private static final Log log = LogFactory.getLog(MyLogger.class);
(3)右クリック→Source→Generate Delegate Methods
(4)全部選択する
→ メソッドが沢山できる
→ ぜんぶ static にする
ここまででもいいが、共通で使うには現実的でない
(5)メソッドを改造する。
引数を、Object、String、String にする。
それぞれ、インスタンス(?)、メソッド名、メッセージ になる。
/**
*
* @param class1 インスタンス
* @param methodName メソッド名
* @param message メッセージ
*/
public static void debug(Object class1, String methodName, String message) {
log.debug(format(class1, methodName,message));
}
(6)メッセージを加工するメソッドをつくる
引数を増やすとそのままではログのメソッドにわたせない
上の三つを一つにくっつける
private static String format(Object class1, String methodName,
String message) {
String tmp = class1.getClass().getName() + "[" + methodName + "]"
+ message;
return tmp;
}
【3】設定ファイルを書く
log4j.properties だ。(XMLもあるがよう知らん)
コンソールとローリングファイルを、2つずつつくる。
コンソールとローリングファイルの一組はlog4j.rootLogger用にする。
log4j.rootLogger=DEBUG, consoleRoot, rollingRoot
レベルはWARNとかERRORにする。
そうしないとSpringとかHibernateとかげろげろログをだす。myfacesも。
その他の組を、MyLogger用にする
log4j.logger.hoge.util.MyLogger=DEBUG, consoleApp1, rollingApp1
こっちはDEBUGにする。
【4】
log4j.properties はクラスパスが通っているところにおく。
【5】テスト用クラスをつくる
▼一部
public String getMessage() {
MyLogger.debug(this, "getMessage", "+++ IN +++");
return message;
}
できたー・・・・・・・
いやー、できてないかな。
コードがのっていないとむずいよねー。。。