有没有人有经验如何使Rails(2.3.x)登录请求级别?就像处理单个请求时抛出的所有日志以某种方式分组在一起。现在每个日志事件都会附加到日志/ *。日志文件中。我希望它们按请求分开,以便我可以看到(并解析)请求开始的位置,请求期间发生了什么以及结束的位置。Rails 2.3.x每个请求日志记录
任何体验或想法?我真的不知道从哪里开始。
谢谢! 伦纳特
有没有人有经验如何使Rails(2.3.x)登录请求级别?就像处理单个请求时抛出的所有日志以某种方式分组在一起。现在每个日志事件都会附加到日志/ *。日志文件中。我希望它们按请求分开,以便我可以看到(并解析)请求开始的位置,请求期间发生了什么以及结束的位置。Rails 2.3.x每个请求日志记录
任何体验或想法?我真的不知道从哪里开始。
谢谢! 伦纳特
在我的应用我更换默认记录器: - 在一行上记录每个消息(删除所有新行) - 添加进程ID,方法名等,以日志行除了标准的东西
我对开源计划这个记录,但暂时在这里它是在情况下,它证明是有用的:
# lives in #{RAILS_ROOT}/lib/annotated.rb
# don't forget to require in config/application.rb:
# require File.join(File.dirname(__FILE__), '../lib/log/annotated')
class AnnotatedLogger < Logger
def initialize *args
super *args
[:info, :debug, :warn, :error, :fatal].each {|m|
AnnotatedLogger.class_eval %Q!
def #{m} arg=nil, &block
pid = "%.5d:" % $$
if block_given?
arg = yield
end
out = arg.gsub(/\n/, '');
file, line, method = caller_method
t = Time.now
super "[%s.%03d] %s %6.6s |%-40.40s | %s" % [t.strftime("%Y-%m-%d %H:%M:%S"), t.usec/1000, pid, "#{m.upcase}",
"\#{File.basename(file)}:\#{line}:\#{method}", out]
end
!
}
def caller_method
parse_caller(caller(3).first)
end
def parse_caller(at)
if /^(.+?):(\d+)(?::in `(.*)')?/ =~ at
file = Regexp.last_match[1]
line = Regexp.last_match[2].to_i
method = Regexp.last_match[3]
[file, line, method ]
end
end
end
end
Jut要清楚...每个日志有一行意味着你可以轻松地grep for一个PROCESS ID记录,从而隔离请求中发生的所有事情(如果您使用的是单线程应用服务器,例如独角兽,杂种等) – 2011-05-19 20:03:51
你或许可以添加一些类型的会话数据,以@下面康斯坦丁的建议,可以稍后组他们每会话。 (它们已经是每个请求了,唯一的web服务器就是请求,每次调用在你加载资源的时候是一个不同的请求。) – 2011-05-19 21:15:40