或るプログラマの開発日記

日々の勉強したことの備忘録なんかに使っていきます

RubyのLoggerを使ってみる

どうも、パイソンです。今回はRubyのログ出力に関する簡単なメモです。

Loggerクラスの使い方

Rubyにはどうも標準でLoggerというログ出力用ライブラリが備わっているようです。
使い勝手としてはJavalog4jと似た風な感じかなーという印象。

プログラム

require 'logger'
log = Logger.new('./logsample.log')
log.debug("debug log")
log.info("info log")
log.warn("warn log")
log.error("error log")
log.fatal("fatal log")

#INFO以上のレベルのみ出力
log.level=Logger::INFO

log.debug("debug log")
log.info("info log")
log.warn("warn log")
log.error("error log")
log.fatal("fatal log")

出力結果(logsample.log)

# Logfile created on 2017-04-16 23:45:50 +0900 by logger.rb/47272
D, [2017-04-16T23:45:50.273300 #9628] DEBUG -- : debug log
I, [2017-04-16T23:45:50.273300 #9628]  INFO -- : info log
W, [2017-04-16T23:45:50.273300 #9628]  WARN -- : warn log
E, [2017-04-16T23:45:50.273300 #9628] ERROR -- : error log
F, [2017-04-16T23:45:50.273300 #9628] FATAL -- : fatal log
I, [2017-04-16T23:45:50.273300 #9628]  INFO -- : info log
W, [2017-04-16T23:45:50.273300 #9628]  WARN -- : warn log
E, [2017-04-16T23:45:50.273300 #9628] ERROR -- : error log
F, [2017-04-16T23:45:50.273300 #9628] FATAL -- : fatal log

という感じで出力することができます。


なお、

log = Logger.new('./logsample.log')

のところを

log = Logger.new(STDOUT)

に変えてみると、標準出力に出すことが出来ます。

Loggerクラスの機能等

そういや、ログローテート機能はどうなってんだろ?と思い調べてみたらちゃんと機能として備わっている模様。

参考URL
Rubyist Magazine - 標準添付ライブラリ紹介 【第 2 回】 Logger


今更ながら、標準で大抵必要な機能が備わっているのがRubyの良さだと感心する。