sam*_*tte 3 ruby logging ruby-on-rails
现在只记录以下内容logs/delayed_job.log:
2012-04-20T03:57:44+0000: Cacher completed after 5.3676
2012-04-20T03:57:44+0000: 1 jobs processed at 0.1744 j/s, 0 failed ...
Run Code Online (Sandbox Code Playgroud)
我正在尝试做的是让它也记录我puts和我的SQL查询,就像在开发模式下一样,除了它仍然被记录log/delayed_job.log.
我尝试添加以下initializers/delayed_job_config.rb但没有运气:
Delayed::Worker.logger = Rails.logger
Delayed::Worker.logger.level = Logger::DEBUG
Run Code Online (Sandbox Code Playgroud)
(我的所有内容puts现在都已记录,但没有更多的作业状态日志,仍然没有SQL查询)
在Rails v3.2.13中,您可以:
Delayed::Worker.logger = ActiveSupport::Logger.new("log/delayed_job.log", Rails.logger.level)
Delayed::Worker.logger.auto_flushing = 1
#only reassign AR logger if we're in a delayed process(rake task or script/delayed_job)
if caller.last =~ /script\/delayed_job/ or (File.basename($0) == "rake" and ARGV[0] =~ /jobs\:work/)
ActiveRecord::Base.logger = Delayed::Worker.logger
end
Run Code Online (Sandbox Code Playgroud)
但是...... ActiveSupport :: BufferedLogger已被弃用https://github.com/rails/rails/blob/master/activesupport/lib/active_support/buffered_logger.rb#L18
另外,您可能想要正确旋转日志?所以我认为这更好:
Delayed::Worker.logger = Logger.new("log/delayed_job.log", 5, 104857600)
if caller.last =~ /script\/delayed_job/ or (File.basename($0) == "rake" and ARGV[0] =~ /jobs\:work/)
ActiveRecord::Base.logger = Delayed::Worker.logger
end
Run Code Online (Sandbox Code Playgroud)
构造函数说保留大约5个日志文件,并在当前日志文件达到100Mb时旋转.详情请见:http: //www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html#method-c-new
感谢:http://www.heedspin.com/2011/01/17/delayed-job-logging.html获取灵感
| 归档时间: |
|
| 查看次数: |
3985 次 |
| 最近记录: |