我该如何配置Rails日志记录器以输出另一种格式的日志字符串?我希望获得更多信息的内容,例如:
[日志级别] [时间] [消息]
调试:01-20-2008 13:11:03.00:方法已调用
当我想要查看只来自特定日志级别(如调试)的消息时,这将非常有帮助。
我该如何配置Rails日志记录器以输出另一种格式的日志字符串?我希望获得更多信息的内容,例如:
[日志级别] [时间] [消息]
调试:01-20-2008 13:11:03.00:方法已调用
当我想要查看只来自特定日志级别(如调试)的消息时,这将非常有帮助。
我进行了一些调查,并找到了RubyOnRails Talk谷歌组中的这篇文章。
所以我稍微修改了一下,并将其放置在我的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
这将导致一个格式字符串,例如:
[DEBUG: 0121 10:35:26 #57078] 渲染布局/_header (0.00089)
# 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