Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在UTC时区中创建Rails日志时间戳?_Ruby On Rails_Ruby_Ruby On Rails 3_Logging - Fatal编程技术网

Ruby on rails 如何在UTC时区中创建Rails日志时间戳?

Ruby on rails 如何在UTC时区中创建Rails日志时间戳?,ruby-on-rails,ruby,ruby-on-rails-3,logging,Ruby On Rails,Ruby,Ruby On Rails 3,Logging,如何使Rails以UTC而不是本地时间打印日志时间戳?它目前正在打印 Started GET "/" for 190.176.185.42 at 2013-08-21 18:27:56 -0400 这将更容易找到用户报告的错误。我看到这个,试了试 production.rb 但它给出了一个错误 undefined method `datetime_format=' for nil:NilClass (NoMethodError) 我认为仅仅设置格式是行不通的。我想我需要先

如何使Rails以UTC而不是本地时间打印日志时间戳?它目前正在打印

Started GET "/" for 190.176.185.42 at 2013-08-21 18:27:56 -0400
这将更容易找到用户报告的错误。我看到这个,试了试

production.rb 但它给出了一个错误

undefined method `datetime_format=' for nil:NilClass (NoMethodError)
我认为仅仅设置格式是行不通的。我想我需要先把时间转换成UTC


Rails 3.2.14.

该行日志由生成。似乎很难更改它,因为它是硬编码的,使用默认格式。也许你必须为了你的目的重写这个方法。

是的,它成功了!使用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

问题是您的记录器是
nil
。为什么?我不知道。它正在生产中。也许它还没有初始化。我应该把那条线放在哪里?这是要使用的正确行吗?可能是这样,请尝试执行
Rails.logger=ActiveSupport::logger.new('where\u log\u goes.log')
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