library logger
要約
ログを記録するためのライブラリです。
使い方
5段階のログレベルに分けてログを記録します。
- FATAL
-
プログラムをクラッシュさせるような制御不可能なエラー
- ERROR
-
エラー
- WARN
-
警告
- INFO
-
一般的な情報
- DEBUG
-
低レベルの情報
全てのメッセージは必ずログレベルを持ちます。また Logger オブジェクトも同じように ログレベルを持ちます。メッセージのログレベルが Logger オブジェクトのログレベルよりも 低い場合メッセージは記録されません。
普段は INFO しか記録していないが、デバッグ情報が必要になった時には、 Logger オブジェクトのログレベルを DEBUG に下げるなどという使い方をします。
例:
require 'logger' log = Logger.new(STDOUT) log.level = Logger::WARN log.debug("Created logger") log.info("Program started") log.warn("Nothing to do!")
上の例ではログには WARN のみが記録されます。下が出力例です。
W, [2005-02-10T20:03:56.489954 #12469] WARN -- : Nothing to do!
例外オブジェクトも記録するメッセージとして使えます。
例:
require 'logger' log = Logger.new(STDOUT) log.level = Logger::ERROR begin File.each_line(path) do |line| unless line =~ /^(\w+) = (.*)$/ log.error("Line in wrong format: #{line}") end end rescue => err log.fatal("Caught exception; exiting") log.fatal(err) end
Logger#formatter= を用いてフォーマットを変更することができます。
logger.formatter = proc { |severity, datetime, progname, msg| "#{datetime}: #{msg}\n" } # => "Thu Sep 22 08:51:08 GMT+9:00 2005: hello world"
参考
- Rubyist Magazine
- 標準添付ライブラリ紹介【第 2 回】
クラス
class Logger | ログを記録するためのクラスです。 |
class Logger::Application | ユーザ定義のアプリケーションにログ機能を簡単に追加することができます。 |
class Logger::Formatter | ロガーのフォーマット文字列を扱うクラス。 |
class Logger::LogDevice | Logger の内部で使用するログの出力先を表すクラスです。 |
class Logger::LogDevice::LogDeviceMutex | ログの出力先ファイルを同期するためのクラスです。 |
モジュール
module Logger::Severity | logger で使用するログレベルを定義したモジュール。 |
例外クラス
class Logger::Error | このライブラリで使用する例外です。 |
class Logger::ShiftingError | ログファイルの切り替えに失敗した場合に発生する例外です。 |
library logger