requires=
classes=Logger,Logger=Application,Logger=Formatter,Logger=LogDevice,Logger=LogDevice=LogDeviceMutex,Logger=Severity,Logger=Error,Logger=ShiftingError
methods=
sublibraries=
is_sublibrary=false
category=

ログを記録するためのライブラリです。

=== 使い方

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

[[m: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
  [[url:http://magazine.rubyist.net/]]
: 標準添付ライブラリ紹介【第 2 回】
  [[url:http://magazine.rubyist.net/?0008-BundledLibraries]]
