情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでLog.jsを使ってログを出力する

ログを出力するには下のようなモジュールを利用する方法があります。

  • log
  • npmlog
  • bunyan
  • winston
  • log4js

この記事ではlogモジュールを利用する方法を取り上げます。

ログのレベル

一般的に、ログにはレベルという属性があり、ログの重要さを表します。

logモジュールの場合、重要さが最も高いものから順に下のようなレベルがあります。

  • emergency・・・アプリケーションが利用不可であることを示します。
  • alert・・・すぐに対処が必要であることを示します。
  • critical・・・重大な問題が発生したことを示します。
  • error・・・問題が発生したことを示します。
  • warning・・・注意すべき事象が発生したことを示します。
  • notice・・・重大な情報であることを示します。
  • info・・・情報であることを示します。
  • debug・・・デバッグ用の情報であることを示します。

ロガーの作成

logモジュールの場合、ログを出力するにはまずロガーを作成しなければなりません。

ロガーを作成するにはlogクラスのコンストラクタを使用します。

var log = require('log');

var logger = new log('info', stream);

第1引数にレベルを指定します。このレベルより低いレベルのログはこのロガーでは出力されなくなります。この引数は指定しなくても構いません。デフォルトはdebugです。

第2引数にログを出力する書き込みストリームを指定します。デフォルトはprocess.stdoutです。すなわち、標準出力です。

返り値としてロガーが得られます。

以後ロガーをloggerと表記します。

ログの出力

ログを出力するにはレベルに応じてレベルの名称と同じ名称のロガーの関数を使用します。

logger.emergency('xxx', 'aaa', 'bbb');
logger.alert('xxx', 'aaa', 'bbb');
logger.critical('xxx', 'aaa', 'bbb');
logger.error('xxx', 'aaa', 'bbb');
logger.warning('xxx', 'aaa', 'bbb');
logger.notice('xxx', 'aaa', 'bbb');
logger.info('xxx', 'aaa', 'bbb');
logger.debug('xxx', 'aaa', 'bbb');

第1引数にメッセージを指定します。このメッセージには書式指定文字列(%s%d%jなど)を含めることもできます。

第2引数以降に第1引数のメッセージの書式指定文字列に順番に埋め込む値を指定します。この引数は指定しなくても構いません。

サンプルコード1

log.js

var log = require('log');
var fs = require('fs');

var logger = new log();
logger.emergency('this is %s message.', 'emergency');
logger.alert('this is %s message.', 'alert');
logger.critical('this is %s message.', 'critical');
logger.error('this is %s message.', 'error');
logger.warning('this is %s message.', 'warning');
logger.notice('this is %s message.', 'notice');
logger.info('this is %s message.', 'info');
logger.debug('this is %s message.', 'debug');

var logger2 = new log('info', fs.createWriteStream('log.txt', 'utf-8'));
logger2.emergency('this is %s message.', 'emergency');
logger2.alert('this is %s message.', 'alert');
logger2.critical('this is %s message.', 'critical');
logger2.error('this is %s message.', 'error');
logger2.warning('this is %s message.', 'warning');
logger2.notice('this is %s message.', 'notice');
logger2.info('this is %s message.', 'info');
logger2.debug('this is %s message.', 'debug');

使用パッケージ

  • Log.js
    npm install logでインストールします。

実行結果

C:\work\node>node log.js
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] EMERGENCY this is emergency message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] ALERT this is alert message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] CRITICAL this is critical message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] ERROR this is error message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] WARNING this is warning message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] NOTICE this is notice message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] INFO this is info message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] DEBUG this is debug message.

C:\work\node>type log.txt
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] EMERGENCY this is emergency message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] ALERT this is alert message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] CRITICAL this is critical message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] ERROR this is error message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] WARNING this is warning message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] NOTICE this is notice message.
[Thu Sep 08 2016 15:25:56 GMT+0900 (東京 (標準時))] INFO this is info message.

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js