LoginSignup
8
9

More than 5 years have passed since last update.

ファイル名 & 行番号 & 関数名付きのログを出力するNode.jsモジュール (js & coffee 両対応)

Posted at

以前からnpmに登録はしていたんですが、coffee-scriptがバージョン1.6.2からエラー時にcoffeeソース上の行番号も表示してくれるようになったので、coffeeソースにも対応したログ表示モジュールとしてバージョンアップしたついでにここで紹介させてもらおうかと思いまして。

npm install lwl

でインストールできます。

ソースはこちらです。 https://github.com/ktty1220/lwl

サンプル

sample.js
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ファイルを実行すると、以下のようなログファイルが出力されます。

lwl.log
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コマンドで実行した場合に限ります。

coffeeソースの行番号が取得できない例
require('coffee-script');
require('./test'); // test.coffeeをjs内でrequire

その他、ログフォーマットをカスタマイズしたり、ログ出力先をファイルではなく標準出力にするなど、アプリケーションのデバッグや運用時の問題解決の助けになる便利機能があります。詳しくはGitHubリポジトリのREADME.mdを参照ください。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9