Rails自定义标记记录器

时间:2013-01-25 19:51:50

标签: ruby-on-rails logging

在您的Rails配置文件中,您可以设置:

config.log_level = :debug
config.log_tags = [:uuid, lambda { |req| Time.now } ]

但是,这仅在使用Rails.logger时有效。我知道您可以创建自定义标记记录器。但语法有点冗长:

logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
logger.tagged("BCX") { Logger.info "Stuff" }  

无论如何我可以用log_tags配置自定义记录器,所以我不必每次都指定使用哪些标签?我确信我可以为此创建一个自定义类,但有没有内置的方法来做到这一点?谢谢!

1 个答案:

答案 0 :(得分:-2)

感谢这个要点,我能够弄清楚: https://gist.github.com/1278448

我甚至不需要使用格式化的记录器,只需要使用Logger子类:

class NepcoLogger < Logger
  def format_message(severity, timestamp, progname, msg)
    "#{timestamp.to_formatted_s(:db)} #{severity} #{msg}\n"
  end 
end