Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > loggerライブラリ

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

http://magazine.rubyist.net/

標準添付ライブラリ紹介【第 2 回】

http://magazine.rubyist.net/?0008-BundledLibraries

クラス

Logger

ログを記録するためのクラスです。

Logger::Application

ユーザ定義のアプリケーションにログ機能を簡単に追加することができます。

Logger::Formatter

ロガーのフォーマット文字列を扱うクラス。

Logger::LogDevice

Logger の内部で使用するログの出力先を表すクラスです。

Logger::LogDevice::LogDeviceMutex

ログの出力先ファイルを同期するためのクラスです。

モジュール

Logger::Severity

logger で使用するログレベルを定義したモジュール。

例外クラス

Logger::Error

このライブラリで使用する例外です。

  Logger::ShiftingError

ログファイルの切り替えに失敗した場合に発生する例外です。