SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CoffeeScriptによるモダンなWebアプリケーション開発

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

CoffeeScriptによるモダンなWebアプリケーション開発 第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によるコンソール出力
図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によるモダンなWebアプリケーション開発連載記事一覧

もっと読む

この記事の著者

飯塚 直(イイヅカ ナオ)

1984年東京都生まれ。 高校時代に趣味でPerlやJavaを使ってプログラミングを始める。 慶応大学湘南藤沢キャンパス卒業後、共同通信社にてニュースサイトの開発などを担当。 その後、面白法人カヤックにてソーシャルゲームの開発などを手がける。 2012年現在、カヤックを退社し個人として活動し...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6530 2012/05/07 14:00

おすすめ

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー