感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Rubyでログ出力を扱うloggerライブラリ

スポンサーリンク

とりあえず、基本的な部分を抜粋したあとに、まとめたサンプルを作る。

・ログをコンソールに表示する

log = Logger.new(STDOUT)

・ログをファイルに出力する

log = Logger.new("sample.log")

・特定のレベル以上のログだけを出力する

log.level = Logger::WARN

・ログのレベル

ログのレベル 意味
FATAL プログラムで対処不可能なエラー
ERROR プログラムで対処可能なエラー
WARN 警告
INFO 一般的な情報
DEBUG 開発者向け情報


上の基本知識を使って作ったRubyのロガーサンプル

# coding: utf-8

require 'logger'

## ファイルに出力する
log = Logger.new("sample.log")

log.debug("This is debug message")
log.info("This is information message")
log.warn("This is warning message")


console = Logger.new(STDOUT)
console.error("やべぇ!")
console.fatal("超やばい!")

## ここから下はWARN以上のものだけ表示する
console.level = Logger::WARN

console.debug("表示されないはず")
console.info("表示されない")
console.warn("これは表示される")
console.fatal("超やべえ")

上のサンプルを実行すると、
sample.logというファイルに

# Logfile created on 2014-03-23 00:15:58 +0900 by logger.rb/36483
D, [2014-03-23T00:15:58.099985 #4296] DEBUG -- : This is debug message
I, [2014-03-23T00:15:58.099985 #4296]  INFO -- : This is information message
W, [2014-03-23T00:15:58.099985 #4296]  WARN -- : This is warning message

というメッセージが出力され、
コンソールには、以下のように表示される。

E, [2014-03-23T00:15:58.099985 #4296] ERROR -- : やべぇ!
F, [2014-03-23T00:15:58.100985 #4296] FATAL -- : 超やばい!
W, [2014-03-23T00:15:58.102987 #4296]  WARN -- : これは表示される
F, [2014-03-23T00:15:58.104997 #4296] FATAL -- : 超やべえ

参考文献

このサンプルを作るために、以下の書籍の第9章を参考にしました。

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)

もちろんログの書き方などはこの本のごく一部でしかなく、有用なレシピがたくさんあります。