# Using logger from rails cron jobs

**URL:** <https://www.ruby-forum.com/t/using-logger-from-rails-cron-jobs/50423>\
**Category:** Rails\
**Created:** [December 16, 2005, 4:53am UTC](https://www.ruby-forum.com/t/using-logger-from-rails-cron-jobs/50423 "2005-12-16T04:53:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [December 16, 2005, 4:53am UTC](https://www.ruby-forum.com/t/using-logger-from-rails-cron-jobs/50423/1 "2005-12-16T04:53:29Z")

</div>

Hi. I’m trying to use logger from a rails cron job.

It works fine, but I’d like the standard ruby behavior of stamping each  
log with date and time. How do I do this?

I’m trying:

# Set up out logging

require ‘logger’  
logger = Logger.new(STDERR)  
logger.level = Logger::INFO  
RAILS\_DEFAULT\_LOGGER = logger # Tell rails to log to our logger also

The logs show the messages fine, but no time stamps or severity level.

Thanks

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [December 16, 2005, 5:18am UTC](https://www.ruby-forum.com/t/using-logger-from-rails-cron-jobs/50423/2 "2005-12-16T05:18:14Z")

</div>

List R. wrote:

> RAILS\_DEFAULT\_LOGGER = logger # Tell rails to log to our logger also
> 
> The logs show the messages fine, but no time stamps or severity level.

I submitted this over 2 months ago, so far nothing, perhaps I should  
submit a patch…

[http://dev.rubyonrails.org/ticket/2484](http://dev.rubyonrails.org/ticket/2484)

This is defined in activesupport’s clean\_logger.rb file. This is because  
Rails overrides the default logging format of Logger. You can override  
this by overriding Logger#format\_message

The code from clean\_logger.rb is:  
private  
alias old\_format\_message format\_message

```
 if method_defined?(:formatter=)
   def format_message(severity, timestamp, progname, msg)
     "#{msg}\n"
   end
 else
   def format_message(severity, timestamp, msg, progname)
     "#{msg}\n"
   end
 end

```

You can override format\_message itself with a custom implementation or  
you can override it to call old\_format\_message:

class Logger  
def format\_message \*args  
old\_format\_message \*args  
end  
end

Hope this helps,

Zach

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [December 16, 2005, 5:33am UTC](https://www.ruby-forum.com/t/using-logger-from-rails-cron-jobs/50423/3 "2005-12-16T05:33:16Z")

</div>

List R. wrote:

> RAILS\_DEFAULT\_LOGGER = logger # Tell rails to log to our logger also

Last post was slightly off in the last block I code I submitted, don’t  
call old\_format\_message unless you have 1.8.3, but you can use the  
following code to add your timestamp:

class Logger  
def format\_message(severity, timestamp, msg, progname)  
“#{timestamp} #{msg}\n”  
end  
end

Zach
