Rails logger format string configuration

后端 未结 4 1434
余生分开走
余生分开走 2020-12-01 08:36

How can I configure the rails logger to output its log strings in another format? I would like to get something that is more informative like:

[Log Level] [Time] [Me

4条回答
  •  渐次进展
    2020-12-01 09:06

    Did some digging and found this post in the RubyOnRails Talk google group.

    So I modified it a little bit and put it at the end of my environment.rb:

    module ActiveSupport
      class BufferedLogger
        def add(severity, message = nil, progname = nil, &block)
          return if @level > severity
          message = (message || (block && block.call) || progname).to_s
    
          level = {
            0 => "DEBUG",
            1 => "INFO",
            2 => "WARN",
            3 => "ERROR",
            4 => "FATAL"
          }[severity] || "U"
    
          message = "[%s: %s #%d] %s" % [level,
                                         Time.now.strftime("%m%d %H:%M:%S"),
                                         $$,
                                         message]
    
          message = "#{message}\n" unless message[-1] == ?\n
          buffer << message
          auto_flush
          message
        end
      end
    end
    

    This results in a format string like this:

    [DEBUG: 0121 10:35:26 #57078] Rendered layouts/_header (0.00089)

提交回复
热议问题