ログ出力について<その3>
仕事上、イントラマート(v6.1)という製品を利用したシステムを開発しています。
infoメソッド以外にもメソッドを追加してみました。
debug
warn
error
fatal
利用する際はこんな感じで実装します。
ログ(system.log)はこんな感じになります。
今後はこれを元に出力ログレベルの設定ができるよう拡張すれば良さそうです。![グッド!](https://stat.ameba.jp/blog/ucs/img/char/char2/187.gif)
<関連記事>
ログ出力について
ログ出力について<その2>
ログ出力について<その4>
infoメソッド以外にもメソッドを追加してみました。
![右矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/283.gif)
![右矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/283.gif)
![右矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/283.gif)
![右矢印](https://stat.ameba.jp/blog/ucs/img/char/char2/283.gif)
/**
* 初期化関数
* ※サーバ初期起動時に本関数を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] "致命的エラー"
今後はこれを元に出力ログレベルの設定ができるよう拡張すれば良さそうです。
![グッド!](https://stat.ameba.jp/blog/ucs/img/char/char2/187.gif)
<関連記事>
![アメーバ](https://stat.ameba.jp/blog/ucs/img/char/char2/344.gif)
![アメーバ](https://stat.ameba.jp/blog/ucs/img/char/char2/344.gif)
![アメーバ](https://stat.ameba.jp/blog/ucs/img/char/char2/344.gif)
開発の現場 Vol.003 効率UP&スキルUP エンジニアのための実践ソフトウェア技術誌
posted with amazlet at 11.02.10
SE編集部
翔泳社
売り上げランキング: 424730
翔泳社
売り上げランキング: 424730