如何让Rails以UTC而不是localtime打印日志时间戳?它目前打印
Started GET "/" for 190.176.185.42 at 2013-08-21 18:27:56 -0400
这样可以更轻松地查找用户报告的错误。我看到了这个http://apidock.com/rails/Logger并尝试了
Rails.logger.datetime_format = "%Y-%m-%d %H:%M:%S %Z"
但是它出错了
undefined method `datetime_format=' for nil:NilClass (NoMethodError)
我认为只设置格式不会起作用。我想我需要先将时间转换为UTC。
Rails 3.2.14。
答案 0 :(得分:2)
该行日志由started_request_message
生成。似乎很难改变它,因为硬编码使用默认格式。也许你必须为你的目的覆盖这个方法。
答案 1 :(得分:1)
是的,它有效!使用Yanhao的信息,在production.rb的底部,
Rails::Rack::Logger.class_eval do
# Override logging to spit out UTC time to easier find user reported errors
# https://github.com/rails/rails/blob/v3.2.14/railties/lib/rails/rack/logger.rb#L38
def started_request_message(request)
'Started %s "%s" for %s at %s' % [
request.request_method,
request.filtered_path,
request.ip,
Time.now.utc ]
end
end