/* * サブシステム名: データ格納 * * 機能名: * 監視ログ * * ファイル名: * WatchStorageLog.java * * クラス名: * public WatchStorageLog * * 概要: * 各処理で指定されたエラーIDを元に、ログをログファイルに出力する。 * * 履歴: * 日付 バージョン 名前 内容 * 2006/12/05 1.00 中村 菜恵 新規作成 * * Copyright(c) 2006 NEC Corporation */ package com.jp.nec.nrds.common.log; import java.util.ResourceBundle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class WatchStorageLog { /** プロパティファイル名 */ private static final String MESSAGE = "message"; /** メッセージの詳細メッセージ */ private static final String MESSAGE_MSG = ".message"; /** メッセージの対処方法 */ private static final String MESSAGE_ACT = ".action"; /** 検索文字列(INFO用) */ private static final String iKey = "AP_INFO"; /** 検索文字列(WARN用) */ private static final String wKey = "AP_WARNING"; /** 検索文字列(FATAL用) */ private static final String fKey = "AP_FATAL"; /** 内部ログ */ protected Log log = LogFactory.getLog(this.getClass()); /** * 共通メソッド * プロパティファイルの読み込み、文字列置換処理を行い、 * ログに記述する文字列を返す * * @param errID エラーID * @param key 検索文字列 * @param message[] 置換文字配列 * @return str ログ記述配列 * */ private StringBuffer createLog( String errID, String key, String[] message) { StringBuffer str = new StringBuffer(); String chkStr = ""; int start = 0; // プロパティファイルを読み込む ResourceBundle resourceBundle = ResourceBundle.getBundle(MESSAGE); str.append(errID + ", " + key + ", " ); str.append(resourceBundle.getString(errID + MESSAGE_MSG)); str.append(", "); str.append(resourceBundle.getString(errID + MESSAGE_ACT)); // 置換文字列の数だけ置換処理を繰り返す for (int i = 0; i < message.length; i++) { if (message[i] != null) { chkStr = "{" + i + "}"; start = str.indexOf(chkStr); if (start != -1) { str.replace(start, start + chkStr.length(), message[i]); } } } return str; } /** * 情報(正常)系メソッド(文字列置換なし) * * @param errID エラーID * */ public void info(String errID) { // エラーIDと配列長0の文字列を渡す info(errID,new String[0]); } /** * 情報(正常)系メソッド(文字列置換あり) * * @param errID エラーID * @param message[] 置換文字配列 * */ public void info( String errID, String[] message) { StringBuffer str = new StringBuffer(); // ログレベルが有効かどうか判定する if(log.isInfoEnabled()) { // ログに記述する文字列の取得 str = createLog(errID, iKey, message); log.info(str.toString()); } } /** * 警告系メソッド(文字列置換なし) * * @param errID エラーID * */ public void warning(String errID) { // エラーIDと配列長0の文字列を渡す warning(errID,new String[0]); } /** * 警告系メソッド(文字列置換あり) * * @param errID エラーID * @param message[] 置換文字配列 * */ public void warning( String errID, String[] message) { StringBuffer str = new StringBuffer(); // ログレベルが有効かどうか判定する if(log.isWarnEnabled()) { // ログに記述する文字列の取得 str = createLog(errID, wKey, message); log.warn(str.toString()); } } /** * 異常系メソッド(文字列置換なし) * * @param errID エラーID * */ public void fatal(String errID) { // エラーIDと配列長0の文字列を渡す fatal(errID,new String[0]); } /** * 異常系メソッド(文字列置換あり) * * @param errID エラーID * @param message[] 置換文字配列 * */ public void fatal( String errID, String[] message) { StringBuffer str = new StringBuffer(); // ログレベルが有効かどうか判定する if(log.isFatalEnabled()) { // ログに記述する文字列の取得 str = createLog(errID, fKey, message); log.fatal(str.toString()); } } }