1

我正在使用 rufus-scheduler 来处理 Rails 3.2.x 应用程序的 cron 作业。rootworker.rb正在由工头(实际上是这个特定服务器上的新贵)启动,因此当它启动时,它没有运行的 Rails 上下文。显然,当我尝试打电话loggerRails.logger每次都会失败。

我正在使用log4r作为默认 Rails Logger 的替代品,这非常好,但我想知道这个问题的正确解决方案是什么:

1)我是否需要在启动时为脚本提供 Rails 上下文(它现在只是在运行rake任务,所以当工作脚本移交给 rake 任务时它最终会获得 Rails 环境,我担心之前给脚本提供 Rails 环境运行定时任务将是矫枉过正,因为启动 env 需要很长时间)?或者

2) 我是否应该log4r像在非 Rails Ruby 脚本中那样进行设置,该脚本只是读取 Rails 应用程序正在使用的相同 log4r.yml 配置,因此参与相同的日志结构?

3)或者我没有想到的其他选择?

此外,我将不胜感激一个示例或我应该在推荐的实施中考虑的步骤。

作为参考,我遵循了“如何使用 Rails 3.0.x 配置 Log4r? ”,我认为这在与上述内容集成时会有所帮助:“在 Ruby 应用程序中正确使用 Log4r?”

4

1 回答 1

1

我想这可能是你正在寻找的..

在工作人员本身中使用它,并创建一个自定义命名的日志文件

require 'log4r'

logger = Log4r::Logger.new('test')
logger.outputters << Log4r::Outputter.stdout
logger.outputters << Log4r::FileOutputter.new('logtest', :filename =>  'logtest.log')
logger.info('started script')

## You're actual worker methods go here

logger.info('finishing')
于 2012-08-05T23:49:46.027 回答