LoggerをDIして手軽に使う
たいして役に立たないかもしれないけど、Seasar2でログ出力する時はいつもこれを使っている。
Log4jをラップしたクラスをDIして使うだけだけど・・・・。
package net.atlabo.commons.log; import java.text.MessageFormat; import org.apache.log4j.Logger; /** * ロガークラス * @author @labo * */ public class TraceLog { /* ロガーインスタンス */ private Logger logger; public TraceLog() { /* ロガーを生成 */ this.logger = Logger.getLogger("trace"); } /** * DEBUGログ出力 * @param msg 出力メッセージ * @param t 例外クラス * @param args パラメータ */ public void debug(String msg, Throwable t, Object... args) { if (args != null) { // 引数がある場合バインドする msg = MessageFormat.format(msg, args); } // DEBUGログ出力 logger.debug(msg, t); } /** * DEBUGログ出力 * @param msg 出力メッセージ * @param args パラメータ */ public void debug(String msg, Object... args) { debug(msg, null, args); } /** * INFOログ出力 * @param msg 出力メッセージ * @param t 例外クラス * @param args パラメータ */ public void info(String msg, Throwable t, Object... args) { if (args != null) { // 引数がある場合バインドする msg = MessageFormat.format(msg, args); } // INFOログ出力 logger.info(msg, t); } /** * INFOログ出力 * @param msg 出力メッセージ * @param args パラメータ */ public void info(String msg, Object... args) { info(msg, null, args); } /** * WARNログ出力 * @param msg 出力メッセージ * @param t 例外クラス * @param args パラメータ */ public void warn(String msg, Throwable t, Object... args) { if (args != null) { // 引数がある場合バインドする msg = MessageFormat.format(msg, args); } // WARNログ出力 logger.warn(msg, t); } /** * WARNログ出力 * @param msg 出力メッセージ * @param args パラメータ */ public void warn(String msg, Object... args) { warn(msg, null, args); } /** * ERRORログ出力 * @param msg 出力メッセージ * @param t 例外クラス * @param args パラメータ */ public void error(String msg, Throwable t, Object... args) { if (args != null) { // 引数がある場合バインドする msg = MessageFormat.format(msg, args); } // ERRORログ出力 logger.error(msg, t); } /** * ERRORログ出力 * @param msg 出力メッセージ * @param args パラメータ */ public void error(String msg, Object... args) { error(msg, null, args); } /** * FATALログ出力 * @param msg 出力メッセージ * @param t 例外クラス * @param args パラメータ */ public void fatal(String msg, Throwable t, Object... args) { if (args != null) { // 引数がある場合バインドする msg = MessageFormat.format(msg, args); } // FATALログ出力 logger.fatal(msg, t); } /** * FATALログ出力 * @param msg 出力メッセージ * @param args パラメータ */ public void fatal(String msg, Object... args) { fatal(msg, null, args); } }
上記クラスをapp.diconかどっかに設定します。
使い方は簡単、使用したいクラスでTraceLogをDIします。
@Resource
private TraceLog traceLog;
んで、使うだけ。
traceLog.info("ログ出力します。");
MessageFormat.formatを備えているので、バインドもできます。
traceLog.info("{0}を開始します。", "ログイン");
【出力】 ログインを開始します。
ただそれだけ〜。
Logger.getLoggerしてもいいけど、この方が手軽なので重宝してます。