right_awsのデバッグログ出力を制御する方法
最近、AWSのRuby用コンソールツールの一つであるright_awsを使っているのですが、
スクリプトを実行した時に、
I, [2012-06-23T17:55:15.996727 #25742] INFO -- : New RightAws::AcwInterface using shared connections mode I, [2012-06-23T17:55:15.997220 #25742] INFO -- : Opening new HTTPS connection to monitoring.ap-northeast-1.amazonaws.com:443
のようなデバッグログがいちいち出力されるのが邪魔だなあと思ったので消そうと思いました。
しかし、right_awsはまともなドキュメントがないためやり方がわからず...
なのでライブラリ本体のコードを読んで、デバッグログ制御の方法を調べてみました。
コードを追っていくと、ログ出力に関係のありそうなのが、
- right_aws-3.0.4/lib/awsbase/right_awsbase.rb 314行 ~ 318行
@logger = @params[:logger] @logger = ::Rails.logger if !@logger && defined?(::Rails) && ::Rails.respond_to?(:logger) @logger = RAILS_DEFAULT_LOGGER if !@logger && defined?(RAILS_DEFAULT_LOGGER) @logger = Logger.new(STDOUT) if !@logger @logger.info "New #{self.class.name} using #{@params[:connections]} connections mode"
つまり@params[:logger]に任意のloggerオブジェクトを渡せばいいと。
こんな感じのコードを
- before
Acw = Rightscale::AcwInterface.new(access_key, access_secret)
こんなふうに書き換えたらログレベルを制御できるようになりました。
- after
logger = Logger.new(STDOUT) logger.level = Logger::WARN Acw = Rightscale::AcwInterface.new(access_key, access_secret, {:logger => logger})