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

更新:好的,我没有制定一个好的答案。 我仍然奋斗在-07:00 UTC和我在+02:00 UTC的英雄。

问:如何获取正确的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' 

我把这个放在一个视图中

 <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> 

heroku的应用上呈现这个结果

时区(GMT + 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.now切换到Time.zone.now ,到处? 似乎繁琐。 我真的不在乎服务器的本地时间是什么,由于大量使用Time.now ,给我带来了很多麻烦。 我在这里误解了什么?

经过对Heroku时区问题的进一步调查后,我发现一个post,指出你实际上可以在应用程序级别指定时区,使用以下命令:

 heroku config:add TZ=Europe/Oslo 

我相信这可能是你所有烦恼的答案。 图片由http://www.reality.hk/articles/2010/01/07/1319/提供; ( 编辑:截至2012.08.23。已存档的副本 。)

如果不能改变实际的服务器时间(我认为你不能在Heroku上完成),你唯一的select就是自己转换时间。

如果Time.zone.now太麻烦,可以使用tzinfo gem设置一个全球时区:

 $tz = TZInfo::Timezone.get("Europe/Oslo") $tz.now # current time in Norway 

但是,这仍然是您的应用程序的全球变化,与您正在做的没有太大的不同。