Since moving to Rails 3.2.1, I haven’t been able to figure out how to
flush the log file in production. I found this release note
(https://gist.github.com/1472145), which I don’t understand:
ActiveSupport::BufferedLogger#auto_flushing is deprecated. Either set
the sync level on the underlying file handle like this:
f = File.open(‘foo.log’, ‘w’)
f.sync = true
Or tune your filesystem. The FS cache is now what controls flushing.
First, it seems to me that the above code would erase my existing
production.log file. I definitely don’t want that.
Second, where and when would I run this? Is this something that would
be put in an initializer some place?
And, perhaps I don’t understand the underlying system, but shouldn’t I
be setting config.logger to the return value of that, so the third
line would be:
config.logger = ActiveSupport::BufferedLogger.new f
What I’m really trying to do is have a way to get the production log
to show the latest information. At the moment, it takes a long time to
write. In development mode it works just fine.
(I’m on CentOS 5.5, Ruby 1.9.3, Rails 3.2.1)