6

我在任何地方都找不到关于如何使 queue_classic 将日志写入文件的解决方案。Queue_Classic 用于记录的 Scrolls 似乎也没有任何示例。

有人可以提供一个工作示例吗?

4

1 回答 1

0

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 代码以添加日期/时间。我仍在努力确定适合我的需求。

抱歉,我的最后一行非常关注我给出的环境示例。

原文在这里:在此处输入链接描述

于 2013-08-13T14:50:58.943 回答