为什么Heroku使用服务器时间而不是Rails时区进行日志记录?

oma*_*oma 34 time logging timezone ruby-on-rails heroku

更新:好的,我没有制定好的Q来回答.我仍然在-07:00 UTC和我在+ 02:00 UTC时遇到heroku.

问:如何使用正确的Time.zone编写日志? 9个小时的差异,heroku(美国西部) - 挪威,让人分心.我在我的production.log(使用heroku logs)中得到了这个:

处理ProductionController #create to xml(2010-04-28 23:00:1281.26.51.35)[POST]

我如何写它2010-04-29 08:00:12 +02:00 GMT

请注意,我正在heroku运行,无法自己设置服务器时间,就像您在亚马逊EC2服务器上所做的那样.下面是我之前的问题,我会留下它,因为它包含一些有关时间和区域的有趣信息.


Time.now当我在我的设置另一个时区时,为什么会产生服务器本地时间environment.rb

config.time_zone = 'Copenhagen'
Run Code Online (Sandbox Code Playgroud)

我把它放在一个视野中

<p> Time.zone <%= Time.zone %> </p>
<p> Time.now <%= Time.now %> </p>
<p> Time.now.utc <%= Time.now.utc %> </p>
<p> Time.zone.now <%= Time.zone.now %>  </p>
<p> Time.zone.today <%= Time.zone.today %> </p>
Run Code Online (Sandbox Code Playgroud)

heroku上的应用程序中呈现此结果

Time.zone(格林尼治标准时间+01:00)哥本哈根

Time.now Mon Apr 26 08:28:21 -0700 2010

Time.now.utc Mon Apr 26 15:28:21 UTC 2010

Time.zone.now 2010-04-26 17:28:21 +0200

Time.zone.today 2010-04-26

Time.zone.now产生正确的结果.我到处都要切换Time.nowTime.zone.now吗?看起来很麻烦.我真的不在乎服务器的本地时间是什么,由于大量使用,它给我带来了很多麻烦Time.now.我在这里误解了什么根本的东西吗?

sev*_*een 73

在对我自己的Heroku时区问题进行进一步调查后,我发现了一个帖子,表明您实际上可以使用以下命令在应用程序级别指定时区:

heroku config:add TZ=Europe/Oslo
Run Code Online (Sandbox Code Playgroud)

我相信这可能是你所有麻烦的答案.由http://www.reality.hk/articles/2010/01/07/1319/提供(编辑: 截至2012.08.23的断开链接. 存档副本.)

  • 为了防止其他人追逐它,可以在维基百科上找到时区选项:http://en.wikipedia.org/wiki/List_of_tz_database_time_zones (5认同)
  • 此配置是否也会影响heroku插件数据库? (4认同)
  • 我尝试过这个,但是日志的时区没有变化. (2认同)