A logger for rails cron jobs that want output that is sent to standard out and is:
- Formatted in the same way as Rails.logger
- At the same log level as Rails.logger
logger = RailsCronLogger::Logger.new logger.info "info" logger.debug "debug"
You can optionally supply a :logdev parameter to send the logs somewhere else, while keeping the formatting and log level of Rails.
logger = RailsCronLogger::Logger.new(:logdev => '/some/log/path.log')
:logdev is the same type of argument as can be passed to the normal Ruby Logger
Note: In the test environment logs are sent to the normal Rails log device by default to avoid mixing log messages with test output.
Note on flushing
You probably also want to set
$stdout.sync = true in your crontab.
1 * * * * rails runner '$stdout.sync = true; <your code here>'
$stdout.sync = true in this gem seems a bit overreaching, but for convenience if you pass
:sync => true to Logger.new then rails-cron-logger will perform this step for you.
logger = RailsCronLogger::Logger.new(:sync => true)