代码之家  ›  专栏  ›  技术社区  ›  Bill

Rails记录器格式字符串配置

  •  16
  • Bill  · 技术社区  · 16 年前

    如何配置Rails记录器以另一种格式输出其日志字符串?我想得到一些更有用的信息,比如:

    [日志级别][时间][消息]

    调试:01-20-2008 13:11:03.00:方法已调用

    当我想跟踪development.log以查找仅来自特定日志级别(如debug)的消息时,这真的有助于我。

    4 回复  |  直到 7 年前
        1
  •  24
  •   Bill    16 年前

    挖了点东西发现了吗 this 发布在RubynRails Talk Google组。

    所以我稍微修改了一下,把它放在我的环境的末尾。

    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
    

    这样会产生如下格式字符串:

    [调试:0121 10:35:26_57078]渲染布局/_标题(0.00089)

        2
  •  2
  •   Paul Alexander    10 年前

    对于Rails4应用程序,我构建了一个简单的gem,它不仅增加了对基本标记(如时间戳和日志级别)的支持,而且还为日志消息本身添加了颜色。

    https://github.com/phallguy/shog

        3
  •  1
  •   Binary Logic    7 年前

    标签的问题在于,它们会将日志混乱到无法读取的程度。

    我推荐一些像 timber . 它使用上下文(级别、时间、会话ID等)自动扩充日志,而不牺牲可读性。

        4
  •  1
  •   rocLv    7 年前
    # config/initializers/rack_logger.rb
    module Rails
      module Rack
        class Logger < ActiveSupport::LogSubscriber
          # Add UserAgent
          def started_request_message(request)
             'Started %s "%s" for %s at %s by %s' % [
              request.request_method,
              request.filtered_path,
              request.ip,
              Time.now.to_default_s,
              request.env['HTTP_USER_AGENT'] ]
          end
        end
      end
    end
    

    source link