CoffeeScriptベストプラクティス集 Node.jsアプリケーション編(4)

CodeZine / 2012年5月7日 14時0分

図6 トップダウン表示

 最近話題の新言語『CoffeeScript』をとりあげた連載「CoffeeScriptによるモダンなWebアプリケーション開発」。連載第3回からはベストプラクティス編として、CoffeeScriptでNode.jsアプリケーションを開発する際によく使われる実用的な開発手法を4回に分けて紹介しています。CoffeeScriptの歴史や概要については過去の連載も参照ください。

■ログ出力

 アプリケーションを稼働させる時にログを出力することは、デバッグや問題解決のために非常に重要です。本番運用が始まると24時間張り付いて状態を見守ることは難しいため、問題発生時など過去の状態を調べたい時にログが貴重な手がかりとなります。

 Node.js用に様々なログ出力モジュールが公開されていますが、ここではwinston(MITライセンス)というライブラリを紹介します。

●winstonのインストール

 winstonをインストールするには、プロジェクトのディレクトリで次のコマンドを実行します。

$ npm install winston
●winstonの使い方

 winstonの使い方をリスト1に示します。デフォルトではコンソールにのみ出力されるため、リスト1ではファイルにも出力されるように設定しています。

[リスト1]winstonでログを出力する
winston = require 'winston' # ファイルにもログを出力 winston.add winston.transports.File, filename : 'app.log' # 出力先となるファイル timestamp: true # タイムスタンプを出力する # コンソールの出力形式を変更する winston.remove winston.transports.Console winston.add winston.transports.Console, timestamp: true # タイムスタンプを出力する colorize : true # 色を付ける level : 'silly' # sillyレベル以上のログをすべて出力(デフォルトはinfo) # sillyレベルのメッセージを出力 winston.silly "This is silly" # verboseレベルのメッセージを出力 winston.verbose "This is verbose" # infoレベルのメッセージを出力 winston.info "This is info" # warnレベルのメッセージを出力 winston.warn "This is warn" # debugレベルのメッセージを出力 winston.debug "This is debug" # errorレベルのメッセージを出力 winston.error "This is error"
 このリストを実行すると図1のように表示されます。

図1 winstonによるコンソール出力


●出力オプション

 winston.add()の第2引数には出力先に応じて以下のようなオプションを指定できます。()内の大文字はデフォルト値を表します。

●出力先がコンソールの場合のオプション

level(文字列):このレベル以上のログを出力する。デフォルトはinfo。 silent(true/FALSE):trueを指定すると何も出力しない。 colorize(true/FALSE):色付きで出力するか。 timestamp(true/FALSE):メッセージと一緒に時刻を出力するか。 ●出力先がファイルの場合のオプション

level(文字列):このレベル以上のログを出力する。デフォルトはinfo。 silent(true/FALSE):trueを指定すると何も出力しない。 timestamp(true/FALSE):メッセージと一緒に時刻を出力するか。 filename(文字列):出力先のファイル名。 maxsize(バイト数):ログファイルの最大サイズ。このサイズを超えると新しいファイルが作られる。 maxFiles(ファイル数):ログファイルの最大サイズを超えた場合に何個までファイルが作られるか。 json(TRUE/false):JSON形式で出力するか。 ●レベル一覧

 ログ出力時に、そのログがどの程度の重要性を持つかの目安としてレベルを付けます。前述の出力オプションでlevelを指定すると、そのレベル以上の重要度を持つメッセージだけを出力することができます。

 デフォルトでは表2に示すレベルが使えます。一番上のsillyは最も重要度が低く、一番下のerrorは最も重要度が高いメッセージに使います。

表2 初期状態で使えるレベル
レベル おおよその意味 silly その他 verbose 詳細な情報 info 情報 warn 警告 debug デバッグ用出力 error エラー


■関連記事
CoffeeScriptベストプラクティス集 ブラウザ向けJavaScript編(3)
CoffeeScriptベストプラクティス集 ブラウザ向けJavaScript編(2)
CoffeeScriptベストプラクティス集 ブラウザ向けJavaScript編(1)
CoffeeScriptベストプラクティス集 Node.jsアプリケーション編(4)
CoffeeScriptベストプラクティス集 Node.jsアプリケーション編(3)

■記事全文へ

CodeZine

トピックスRSS

ランキング