RubyのLoggerを使ってみる
どうも、パイソンです。今回はRubyのログ出力に関する簡単なメモです。
Loggerクラスの使い方
Rubyにはどうも標準でLoggerというログ出力用ライブラリが備わっているようです。
使い勝手としてはJavaのlog4jと似た風な感じかなーという印象。
プログラム
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の良さだと感心する。