Production Logging with Rails 2.2.2


#1

I’m having an issue with logging when I run my Rails app in production
mode:

script/console production
Loading production environment (Rails 2.2.2)

Rails.logger
=> #<ActiveSupport::BufferedLogger:0x24e46c8 @auto_flushing=1000,
@log=#<File:log/production.log>, @buffer={#<Thread:0x35700 run>=>[“My
logged message\n”]}, @guard=#Mutex:0x24c0688, @level=0>

Rails.logger.error(“hello!”)
=> “hello!\n”

Rails.logger
=> #<ActiveSupport::BufferedLogger:0x24e46c8 @auto_flushing=1000,
@log=#<File:/Users/tom/Sites/buzzsprout/log/production.log>, @buffer=
{#<Thread:0x35700 run>=>[“Mylogged message\n”, “hello!\n”]},
@guard=#Mutex:0x24c0688, @level=0>

For some reason, messages are not being written to the log when I use
the logger.error or logger.info methods. They appear in the
Rails.logger @buffer?

Anyone have any ideas?

Thanks!
Tom


#2

Its worth noting that the system logs just fine, it is just my logger
messages that get stuck in the buffer. If I run Rails.logger.flush
from the console, the messages are written correctly to the production
log. Weird.


#3

On Mar 11, 8:36 pm, tomrossi7 removed_email_address@domain.invalid wrote:

Its worth noting that the system logs just fine, it is just my logger
messages that get stuck in the buffer. If I run Rails.logger.flush
from the console, the messages are written correctly to the production
log. Weird.

The buffered log only hits disk when its flushed (which occurs either
when more than X has been logged or as part of the request cycle),
which isn’t going to happen by itself when you’re running from the
console. Not sure what else you can do other than ensure that flush is
called at some point.

Fred


#4

I got my logging to start working by adding the following to the end
of my environment.rb file:

Rails.logger.auto_flushing =1

I wonder if there is an issue with Rails 2.2.2 flushing the log
buffer?

Thanks,
Tom


#5

Interesting i am having the same issue with Jruby/Tomcat. Nothing is
getting logged to localhost-YYYY-MM-DD.log files at all after a period
of time.

Is there no way to set the buffer threshold to force a flush on every
log ?

Adam


#6

i can say for sure there is at least with Jruby/Tomcat running Rails.
did this only effect you in production ?