ロギング
ログの出力はRuby標準のLoggerよりLog4rがよさそうね。
http://log4r.sourceforge.net/
Apache Jakarta製じゃないけど、使い方は同じような感じ。
インストールはgemで。
gem install log4r
ドキュメント読みながら試してみる。コンソールに出力。
require 'rubygems' require 'log4r' include Log4r logger = Logger.new('test') logger.outputters = StdoutOutputter.new('console') logger.debug('log output') =>DEBUG test: log output
設定ファイルにコンソールとファイルに出力するように設定してみる。(log4r.xml)
<log4r_config> <pre-config> <global level="DEBUG"/> </pre-config> <outputter name="stdout" type="StdoutOutputter"/> <outputter name="file" type="FileOutputter"> <filename>log.log</filename> </outputter> <logger name="test" trace="true"> <outputter>stdout</outputter> <outputter>file</outputter> </logger> </log4r_config>
出力用Rubyスクリプト。Loggerの取得はxmlのloggerタグのnameで定義してあるものをLogger#getで取得している。設定ファイルを使用する場合、loggerタグであらかじめ設定してあるものをgetするみたい。Log4jとちょっとちがう。
require 'rubygems' require 'log4r' require 'log4r/configurator' include Log4r Configurator.load_xml_file('log4r.xml') logger = Logger.get('test') logger.debug('log output') =>DEBUG test(test.rb:8): log output
Log4jは自分のクラス名をカテゴリにしてLoggerを取得してたけど、Log4rは設定ファイルに定義してあるLogger名を指定しないといけない。どうなんこれ?