我在任何地方都找不到关于如何使 queue_classic 将日志写入文件的解决方案。Queue_Classic 用于记录的 Scrolls 似乎也没有任何示例。
有人可以提供一个工作示例吗?
我在任何地方都找不到关于如何使 queue_classic 将日志写入文件的解决方案。Queue_Classic 用于记录的 Scrolls 似乎也没有任何示例。
有人可以提供一个工作示例吗?
QC 调用的方法中的日志记录将成为日志记录的来源。例如,在铁轨中。对 Rails.logger 的任何调用都将转到适合您的 RAILS_ENV 的日志文件。来自滚动的日志数据进入标准输出,因此您可以在启动队列时将标准输出从队列传输到日志文件。
您可以使用 god.rb 控制您的队列,并提供与此类似的 god.rb 配置实例(我已将队列、目录等数量的配置留给您):
number_queues.times do |queue_num|
God.watch do |w|
w.name = "QC-#{queue_num}"
w.group = "QC"
w.interval = 5.minutes
w.start = "bundle exec rake queue:work" # This is your rake task to start QC listening
w.gid = 'nginx'
w.uid = 'nginx'
w.dir = rails_root
w.keepalive
w.env = {"RAILS_ENV" => rails_env}
w.log = "#{log_dir}/qc.stdout.log" # Or.... "#{log_dir}//qc-#{queue_num}.stdout.log"
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
end
end
FWIW,我发现 STDOUT 日志数据没有多大帮助,最终可能只是将其发送到 bitbucket。
如果日志数据无用,我们应该考虑将其删除。
当我从命令行运行它时,DEBUG 非常好。有时我试图弄清楚我做了什么来搞砸一切(通常是捆绑问题、路径问题等)。或者我要演示队列中发生的事情的时候。
对我来说,INFO 日志记录包括标准的 lib=queue_classic level=info action=insert_job elapsed=16 消息以及来自分叉执行或 PostgreSQL 的任何 STDOUT/STDERR。我没有扩展任何日志记录类,因为滚动转到 STDOUT 并且我的任务位于提供日志记录的环境中。
当然,它可以被删除。我认为这真的取决于环境和队列在做什么。如果我要做一些没有 Rails.logger 的事情,那么我会使用 QC.log 并更有效地滚动并以这种方式检测我的任务。
当我使用它时,我可能会保持我的配置不变,因为输出来自任务本身调用的方法/应用程序。我可能决定覆盖 QC.log 代码以添加日期/时间。我仍在努力确定适合我的需求。
抱歉,我的最后一行非常关注我给出的环境示例。
原文在这里:在此处输入链接描述