- 追加された行はこの色です。
- 削除された行はこの色です。
&tag(Rails3/ログ出力の改善);
*目次 [#w9a527b6]
#contents
*参考情報 [#teab3dd8]
-[[Logger!!!(ログにタイムスタンプを追加する方法) - rochefort's blog:http://rochefort.hatenablog.com/entry/20100310/p1]]
-[[rails3.1.1でLoggerクラスを使ってログ出力を改善するメモ - やぶろぐ:http://d.hatena.ne.jp/hellon999/20111112/1321071045]]
*ログにタイムスタンプを追加する。 [#pd66bc75]
-environment.rbに以下を追加。
#pre{{
class Logger
class Formatter
def call(severity, time, progname, msg)
format = "[%s] %s %s\n"
format % ["#{time.strftime('%Y-%m-%d %H:%M:%S')}", severity, msg2str(msg)]
end
end
end
}}
-development.rb、production.rbなどでログ上記Loggerを使うように設定する。
#pre{{
config.logger = Logger.new(config.paths["log"].first)
config.logger.formatter = Logger::Formatter.new
config.logger.level = Logger::DEBUG
config.colorize_logging = false
}}
*assetのログを非表示にする [#v5a68e34]
-assetパイプラインのログが大量に表示されてうっとしい場合、以下のconfig/initializers/queit_assets.rbを作る。[[How to disable logging of asset pipeline (sprockets) messages in Rails 3.1? - Stack Overflow:http://stackoverflow.com/questions/6312448/how-to-disable-logging-of-asset-pipeline-sprockets-messages-in-rails-3-1]]
#pre{{
if Rails.env.development?
Rails.application.assets.logger = Logger.new('/dev/null')
Rails::Rack::Logger.class_eval do
def call_with_quiet_assets(env)
previous_level = Rails.logger.level
Rails.logger.level = Logger::ERROR if env['PATH_INFO'] =~ %r{^/assets/}
call_without_quiet_assets(env)
ensure
Rails.logger.level = previous_level
end
alias_method_chain :call, :quiet_assets
end
end
}}
*ActiveRecordのSQLを表示しない [#o7941be2]
-config.logger.level = Logger::INFOにすると表示されない。
-もしくはconfig/initializers/quiet_sql.rbで、loggerをnilに設定する。[[Disable Rails 3.1 SQL logging - Stack Overflow:http://stackoverflow.com/questions/7759321/disable-rails-3-1-sql-logging]]
#pre{{
ActiveRecord::Base.logger = nil
}}