Javascriptのconsoleログ出力をカスタマイズして、エラーレベルの出力やデバックログの出力制御を行う方法


Javascriptのログ出力にはconsole.logやconsole.error、console.debugなどが用意されていますが、Lambdaでnodeを書くときやreactでログ出力をする際にデバッグログの出力制御ができなかったり、ログレベルの出力が出来なかったりと不便だったので、consoleログ出力をカスタマイズしてみました。

console.debugなどの関数を差し替える方法

新しいログ出力関数を用意すると既存コードをいろいろ直さなければいけなかったので、console.debug()関数などを直接カスタマイズすることにしました。これで既存コードは特に修正せずに、デバッグログの出力制御やログフォーマットを調整することができます。

console.debug()関数のカスタマイズは以下のように行うことができます。

var _debug = console.debug;
// デバッグログはデバックモードのみ出力 
console.debug = function () { 
   // 処理を記載
   _debug.apply(console, arguments); 
} 

サンプルコード

以下にサンプルコードを記載します。
console.debug()はDEBUG_MODEがtrueのときのみ出力され、また、error()、 warn()、info()、debug()はログメッセージの前にログレベルを”[ERROR]”のように出力するようにしてみました。

以下のファイルをjsファイルで保存してimportすればconsoleログ出力がカスタマイズされます。

const DEBUG_MODE = true;  //trueのときのみデバッグログを出力する
 
initLogger(); 
 
/* 
 * ログ関数上書き関数 
 */ 
function initLogger() { 
    var _warn = console.warn; 
    var _error = console.error; 
    var _debug = console.debug; 
    var _info = console.info; 
 
    // デバッグログはデバックモードのみ出力 
    console.debug = function () { 
        if (DEBUG_MODE === true) { 
            arguments[0] = "[DEBUG] " + arguments[0]; //第1引数(メッセージ)の前にログレベルを出力
            _debug.apply(console, arguments); 
        } 
    } 
 
    // INFOログ 
    console.info = function () { 
        arguments[0] = "[INFO] " + arguments[0]; //第1引数(メッセージ)の前にログレベルを出力
        _info.apply(console, arguments); 
    } 
 
    // WARNログ 
    console.warn = function () { 
        arguments[0] = "[WARN] " + arguments[0]; //第1引数(メッセージ)の前にログレベルを出力
        _warn.apply(console, arguments); 
    } 

    // ERRORログ 
    console.error = function () { 
        arguments[0] = "[ERROR] " + arguments[0]; //第1引数(メッセージ)の前にログレベルを出力
        _error.apply(console, arguments); 
    } 
} 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です