如何配置queue_classic日志记录

ant*_*nko 5 ruby ruby-on-rails worker-process task-queue

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

有人能提供一个有效的例子吗?

bma*_*ets 0

QC 调用的方法内的日志记录将是日志记录的来源。例如,在轨道中。对 Rails.logger 的任何调用都将转到适合您的 RAILS_ENV 的日志文件。来自滚动的日志数据会发送到标准输出,因此您可以在启动队列时将 STDOUT 从队列传输到日志文件。

您可以使用 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
Run Code Online (Sandbox Code Playgroud)

FWIW,我发现 STDOUT 日志数据没有什么帮助,最终可能只是将其发送到位桶。

如果日志数据没有用,我们应该考虑将其删除。

当我从命令行运行 DEBUG 时,它非常好用。有时,当我试图弄清楚我做了什么让一切陷入困境时(通常是捆绑问题、路径问题等)。或者有时我要演示队列中发生的情况。

对我来说,INFO 日志记录由标准 lib=queue_classic level=info action=insert_job elapsed=16 消息以及来自分叉执行或来自 PostgreSQL 的任何 STDOUT/STDERR 组成。我没有扩展任何日志记录类,因为滚动到 STDOUT 并且我的任务位于提供日志记录的环境中。

当然,它可以被删除。我认为这实际上取决于环境和队列正在做什么。如果我要做的事情没有 Rails.logger,那么我会使用 QC.log 并更有效地滚动,并以这种方式检测我的任务。

当我使用它时,我可能会保持配置不变,因为输出来自任务本身调用的方法/应用程序。我可能决定覆盖 QC.log 代码以添加日期/时间。我仍在努力确定什么适合我的需求。

抱歉,我的最后一行实际上主要关注我给出的环境示例。

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