ログ¶
Logger APIを利用する¶
Logger(jp.co.intra_mart.common.platform.log.Logger)の使用方法について記述します。
Loggerオブジェクトを取得する¶
public int add(final int value1, final int value2) { // ロガーインスタンスを取得 // ロガー名を指定していないため、クラス名がロガー名となる // クラス名:tutorial.action.AddAction // ロガー名:tutorial.aciton.AddAction final Logger logger = Logger.getLogger(); return 0; }Logger#getLogger()メソッドを利用してLoggerオブジェクトを取得します。引数に渡す文字列がロガーの名前となります。引数に何も渡さない場合は、呼び出したクラス名(FQDN)がロガーの名前となります。
ログを出力する¶
public int add(final int value1, final int value2) { // ロガーインスタンスを取得 // ロガー名を指定していないため、クラス名がロガー名となる // クラス名:tutorial.action.AddAction // ロガー名:tutorial.aciton.AddAction final Logger logger = Logger.getLogger(); logger.debug("arguments=[{}, {}]", value1, value2); final int result = value1 + value2; logger.trace("result={}", result); return result; }Loggerオブジェクトを利用してログの出力を行います。上記の関数では、引数に渡された値がdebugレベルで、計算結果がtraceレベルで出力しています。ログレベルdebugでadd(1, 2)を実行した場合は以下のような出力になります。[DEBUG] t.a.AddAction - arguments=[1, 2]ログレベルtraceでadd(1, 2)を実行した場合は以下のような出力になります。[DEBUG] t.a.AddAction - arguments=[1, 2] [TRACE] t.a.AddAction - result=3
MDC APIを利用する¶
MDC(jp.co.intra_mart.common.platform.log.MDC)の使用方法について記述します。
MDC¶
Mapped Diagnostic Context(マップ化された診断コンテキスト)を利用することにより、ログ設定ファイルのレイアウト設定で独自に定義したkeyで保存した情報をログに出力することが可能となります。MDC APIを利用することにより、独自に定義したkeyへの情報の書き込みが可能となります。
MDCを利用したログを出力する¶
// MDCのキーを定義 private static final String MKC_FUNC_KEY = "application.func"; public int add(final int value1, final int value2) { // ロガーインスタンスを取得 // ロガー名を指定していないため、クラス名がロガー名となる // クラス名:tutorial.action.AddAction // ロガー名:tutorial.aciton.AddAction final Logger logger = Logger.getLogger(); // MDCに値を設定 MDC.put(MKC_FUNC_KEY, "add"); logger.debug("arguments=[{}, {}]", value1, value2); final int result = value1 + value2; logger.trace("result={}", result); // MDCの値を初期化 MDC.remove(MKC_FUNC_KEY); return result; }実行中の関数名をMDCに設定しています。MDC#put(key, value)メソッドで、MDCのキー “application.func” に実行中の関数名 “add” を設定しています。MDCに保存した内容は、明示的に初期化が行われない限り値が初期化されることがありません。そのため、目的のログ出力処理が完了後にMDC#remove(key)メソッドで、MDCのキー “application.func” の値を初期化しています。出力例%CONTEXT_PATH%/WEB-INF/conf/log/im_logger.xmlの<configuration>/<appender name=”STDOUT”>/<encoder>/<pattern>の内容を以下の通りに変更し、アプリケーションサーバを再起動します。[%level] %logger{10} - %X{application.func} %msg%nログレベルtraceでadd(1, 2)を実行した時のログ出力[DEBUG] t.a.AddAction - add arguments=[1, 2] [TRACE] t.a.AddAction - add result=3