Apache Commons Logging (JCL)は軽量であり、且つ、その他のログツールに対して抽象的で独立したインターフェースを提供します。これをつかうとJDK logging API (JSR-47),Log4J,Avalon LogKitなどのログ実装をプラグインして使うことができます。
JCLは、自動でLogging Systemを見つけてくれるんだけど、自分で指定したい場合は、『commons-logging.properties』に記述することで可能でっす。
ホームページ
Commons-Logging
サンプル・ソース
下記が簡単な使用例です。
public class MainRss {
private static Log logger= LogFactory.getLog("com.ime.dtc.ich.MainRss");
public static void main(String[] args) {
if(logger.isInfoEnabled()){
logger.info("Rss Update Start...");
}
try{
//なにか処理する
}catch (ConnectException ex){
logger.error("SQL connection exception");
ex.printStackTrace();
}catch (Exception ex){
ex.printStackTrace();
logger.error("Exception",ex);
}
if(logger.isInfoEnabled()){
logger.info("Done",ex);
}
}
}
ポイントは、きちんとif()文で下記を確認してからにすると、ログの引数内の処理でオーバーヘッドがかかりません。
log.isFatalEnabled();
log.isErrorEnabled();
log.isWarnEnabled();
log.isInfoEnabled();
log.isDebugEnabled();
log.isTraceEnabled();
それから、もしLogging Systemを指定したい場合は、パスの通ったところに下記のファイルを置いておけばOKです。
"commons-logging.properties"
org.apache.commons.logging.log=org.apache.commons.logging.impl.Log4JLogger
それでもって、"log4j.xml"を配置しておけば、そのファイルの内容に沿ったログの処理をしてくれます。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--ログを出力するFileAppenderをfileとして定義 -->
<appender name="file" class="org.apache.log4j.FileAppender">
<!-- デフォルトのログレベル -->
<param name="threshold" value="debug"/>
<!-- ログのファイル名 -->
<param name="File" value="logs/hibernate.log" />
<!-- ログの追加・新規の設定 -->
<param name="Append" value="false" />
<!-- ログの出力形式を指定 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p %c{1} - %m%n"/>
</layout>
</appender>
<!--ログを出力するConsoleAppenderをstdoutとして定義 -->
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<!-- デフォルトのログレベル -->
<param name="threshold" value="warn"/>
<!-- ログの出力形式を指定 -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p %c{1} - %m%n"/>
</layout>
</appender>
<root>
<priority value="info" />
<appender-ref ref="stdout"/>
<appender-ref ref="file"/>
</root>
</log4j:configuration>
Annex
Level | Usage |
---|---|
fatal | システムがこれ以上動作できない致命的なエラーが発生した場合 |
error | 予期せぬ動作などにより、正しく処理できない場合 |
warn | なんらかの問題が発生したが、動作には影響がない場合 |
info | 設定ファイルを読み込んだときの設定情報、システム開始/停止時の状態出力など |
debug | デバッグ情報。例えば、外部モジュールから呼ばれるメソッドの入出力情報など |
trace | 詳細なデバッグ情報。モジュール内部の情報、ループの繰り返しで大量に出力される情報など |
アペンダ | 機能 |
---|---|
ConsoleAppender | コンソールにログを出力する |
FileAppender | ファイルにログを出力する |
DailyRollingFileAppender | ファイルにログを出力するが毎日/毎週といった、一定期間でログのバックアップを取り、新しいファイルにログを出力することができる |
JDBCAppender | データベースにログを出力する |
SMTPAppender | メールにログを出力する |
変数 | 説明 |
---|---|
%c | カテゴリ名。%c{n}で表示するカテゴリ階層を指定する。例えば、a.b.cというカテゴリに対して、%c{2}はb.cを出力する |
%d | 日付。HHを時間、mmを分、ssを秒、SSSをミリ秒としたとき、%d{HH:mm:ss,SSS},%d{ddMMMyyyyHH:mm:ss,SSS}という形式で指定できる。また%d{ISO8601},%d{ABSOLUTE}という形式でも指定可能 |
%L | 行番号 |
%m | メッセージ |
%n | 改行。ログメッセージの最後に挿入 |
%p | 優先度(fatal/error/warn/info/debug) |
%r | アプリケーションの実行開始からの経過時間 |
%t | スレッド名。マルチスレッドのプログラムの場合、利用を勧める |
0 件のコメント:
コメントを投稿