ログ出力について<その3> | ソフトウェア開発会社で働く社員のアメブロ

ログ出力について<その3>

仕事上、イントラマート(v6.1)という製品を利用したシステムを開発しています。



infoメソッド以外にもメソッドを追加してみました。
右矢印debug
右矢印warn
右矢印error
右矢印fatal

/**
* 初期化関数
* ※サーバ初期起動時に本関数を1度だけ呼び出して下さい。
*/

function init() {
// ログ関数を汎用登録します。
Procedure.define("SystemLogger", new SystemLogger());
}

/**
* コンストラクタ
*/

function SystemLogger() {
this.debug = debug;
this.info = info;
this.warn = warn;
this.error = error;
this.fatal = fatal;
}

/**
* システムログへログを出力します。
* @param {String} level ログレベル
* @param {Object} message メッセージ
* @private
*/

function _echo(level, message) {
// ログインユーザIDを取得します。
var uid = Module.client.get("id");
// システムログに出力します。
echo(Format.get("%s¥t[%s] %s", level, uid, ImJson.toJSONString(message)));
}

/**
* システムログへデバッグログを出力します。
* ・ログレベルも合わせて出力します。
* ・ログインユーザーIDも合わせて出力します。
* ・ImJson#toJSONString(message)の変換結果を出力します。
* @param {Object} message メッセージ
*/

function debug(message) {
_echo("DEBUG", message);
}

/**
* システムログへ情報ログを出力します。
* ・ログレベルも合わせて出力します。
* ・ログインユーザーIDも合わせて出力します。
* ・ImJson#toJSONString(message)の変換結果を出力します。
* @param {Object} message メッセージ
*/

function info(message) {
_echo("INFO", message);
}

/**
* システムログへ警告ログを出力します。
* ・ログレベルも合わせて出力します。
* ・ログインユーザーIDも合わせて出力します。
* ・ImJson#toJSONString(message)の変換結果を出力します。
* @param {Object} message メッセージ
*/

function warn(message) {
_echo("WARN", message);
}

/**
* システムログへエラーログを出力します。
* ・ログレベルも合わせて出力します。
* ・ログインユーザーIDも合わせて出力します。
* ・ImJson#toJSONString(message)の変換結果を出力します。
* @param {Object} message メッセージ
*/

function error(message) {
_echo("ERROR", message);
}

/**
* システムログへ致命的エラーログを出力します。
* ・ログレベルも合わせて出力します。
* ・ログインユーザーIDも合わせて出力します。
* ・ImJson#toJSONString(message)の変換結果を出力します。
* @param {Object} message メッセージ
*/

function fatal(message) {
_echo("FATAL", message);
}



利用する際はこんな感じで実装します。
Procedure.SystemLogger.debug("デバッグ");
Procedure.SystemLogger.info("情報");
Procedure.SystemLogger.warn("警告");
Procedure.SystemLogger.error("エラー");
Procedure.SystemLogger.fatal("致命的エラー");

ログ(system.log)はこんな感じになります。
↓ログイン後(guest)に出力した場合
[yyyy-MM-dd HH:mm:ss,SSS] 251 resin-tcp-connection-*:8080-1 DEBUG [guest] "デバッグ"
[yyyy-MM-dd HH:mm:ss,SSS] 252 resin-tcp-connection-*:8080-1 INFO [guest] "情報"
[yyyy-MM-dd HH:mm:ss,SSS] 253 resin-tcp-connection-*:8080-1 WARN [guest] "警告"
[yyyy-MM-dd HH:mm:ss,SSS] 254 resin-tcp-connection-*:8080-1 ERROR [guest] "エラー"
[yyyy-MM-dd HH:mm:ss,SSS] 255 resin-tcp-connection-*:8080-1 FATAL [guest] "致命的エラー"

今後はこれを元に出力ログレベルの設定ができるよう拡張すれば良さそうです。グッド!



<関連記事>
アメーバ ログ出力について
アメーバ ログ出力について<その2>
アメーバ ログ出力について<その4>



開発の現場 Vol.011
開発の現場 Vol.011
posted with amazlet at 11.02.10

翔泳社
売り上げランキング: 433691


開発の現場 vol.007
開発の現場 vol.007
posted with amazlet at 11.02.10

翔泳社
売り上げランキング: 233511