Rails自定义标记记录器

kst*_*715 5 logging ruby-on-rails

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

config.log_level = :debug
config.log_tags = [:uuid, lambda { |req| Time.now } ]
Run Code Online (Sandbox Code Playgroud)

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

logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
logger.tagged("BCX") { Logger.info "Stuff" }  
Run Code Online (Sandbox Code Playgroud)

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

kst*_*715 -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
Run Code Online (Sandbox Code Playgroud)