JavaScriptロガーを拡張

id:ya_ken:20060719:1153320126にて紹介したJavaScriptのロガーですが、少しだけ拡張しました。追加したのは新規ウィンドウへのロギング機能。これで、開発時は別ウィンドウでロギングするNewWindowWritableを利用し、公開時はどこにもログを書かないNullWritableを利用する、ということが可能になるわけです。

サンプル:http://ya-lab.main.jp/prototype-js-cookbook/05_JavaScript-Logger/

そのためにアプリケーション開発時には以下のような感じの内容を含むJavaScriptファイルを用意しておくと、本番環境で割と簡単に切り替えが出来る。

function getLogger() {
    return new Logger(new NewWindowWritable());

    // 本番環境では下記をコメントアウトし、上記一行をコメントアウトする。
    // return new Logger(new NullWritable());
}

もちろん、もっと華麗な実装方法もある。たとえば、設定ファイルっぽく下記のような感じのファイルを利用して、環境によって書き換える方法もある。

// -- logger-config.js --
var take_a_log = true;

// -- application-logger.js --
function getLogger() {
    if (take_a_log) {
        return new Logger(new NewWindowWritable());
    }
    else {
        return new Logger(new NullWritable());
    }
}

あとはドメインによって自動的に判断したり、パスによって判断したりといったことも考えられるな。