以前からnpmに登録はしていたんですが、coffee-scriptがバージョン1.6.2からエラー時にcoffeeソース上の行番号も表示してくれるようになったので、coffeeソースにも対応したログ表示モジュールとしてバージョンアップしたついでにここで紹介させてもらおうかと思いまして。
npm install lwl
でインストールできます。
ソースはこちらです。 https://github.com/ktty1220/lwl
サンプル
01 var lwl = require('lwl');
02
03 lwl.error('test'); // [1] 関数外で実行
04 function test() {
05 lwl.alert('テスト', 0.0005); // [2] 関数内で実行
06 }
07 test();
08 var x = (function () {
09 lwl.warn([1, 2, 3, 4, 5]); // [3] 無名関数内で実行
10 })();
上記JSファイルを実行すると、以下のようなログファイルが出力されます。
2013-06-20 15:36:02 <anonymous>@sample.js:3 [error] test
2013-06-20 15:36:02 test@sample.js:5 [alert] テスト 0.0005
2013-06-20 15:36:02 <anonymous>@sample.js:9 [warn] [ 1, 2, 3, 4, 5 ]
デフォルトのログ出力フォーマットは
タイムスタンプ
関数名
@ファイル名
:行番号
[出力レベル
] メッセージ
です。
関数外で実行された場合や無名関数内で実行された場合は関数名に<anonymous>
が、test()
関数内で実行された場合は関数名にtest
と入っているのが確認できます。クラスのメソッド内で実行した場合はクラス名.メソッド名
と入ります。
coffee-scriptで実行した場合もちゃんとcoffeeソース上の行番号が入ります(ただし、バージョン1.6.2以上で実行した場合に限る)。
なお、以下の様に.js内から.coffeeソースをrequireして、その中でログ出力を実行した場合はcoffeeソース上の行番号を取得できません。現状では、coffeeソースの行番号が取得できるのはcoffeeコマンドで実行した場合に限ります。
require('coffee-script');
require('./test'); // test.coffeeをjs内でrequire
その他、ログフォーマットをカスタマイズしたり、ログ出力先をファイルではなく標準出力にするなど、アプリケーションのデバッグや運用時の問題解決の助けになる便利機能があります。詳しくはGitHubリポジトリのREADME.mdを参照ください。