为什么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:12为81.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
但是,这仍然是您的应用程序的全球变化,与您正在做的没有太大的不同。