Why does Heroku log using the server time rather than the Rails time zone?
After some further investigation into my own Heroku timezone problems, I found a post which indicates that you actually can specify the timezone at an application level, using the following command:
heroku config:add TZ=Europe/Oslo
I believe this may be the answer to all your troubles. Courtesy of http://www.reality.hk/articles/2010/01/07/1319/ (Edit: Broken link as of 2012.08.23. Archived copy.)
Without being able to change the actual server time (which I don't think you'll be able to do on Heroku), your only option is to convert the times yourself.
If Time.zone.now
is too cumbersome, you could set a global timezone using the tzinfo gem:
$tz = TZInfo::Timezone.get("Europe/Oslo")$tz.now # current time in Norway
But this is still a global change in your app and not significantly different from what you're doing.
I found that the above solutions did not work on Heroku.I put this in my config/environments/production.rbMake sure you put it before your logger is initialized
Rails::Rack::Logger.class_eval do# Override logging to spit out time in different zone 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.in_time_zone('Melbourne') ] endend