【问题标题】:How to use Logger inside a Resque's worker in a pure ruby application如何在纯 ruby​​ 应用程序中的 Resque 工作人员中使用 Logger
【发布时间】:2015-02-11 14:02:25
【问题描述】:

我有一个使用 Resque 的 ruby​​ 应用程序(不是 Rails)。我想知道我手下的一名工人的情况。

为此,我使用 in the officiel documentation 所述的 Logger 类。

以下是我在工作人员内部的登录方式:

require 'resque'
require 'logger'

<code>

Resque.logger = Logger.new File.new('logfile.log', 'a')
Resque.logger.info "Whatever"

但是,在运行我的工作程序时,实际上并没有记录任何内容。就好像工人实际上忽略了所有这些日志指令。不会引发错误。其他代码段实际工作 - 只有日志记录部分被忽略。

我尝试使用记录器类本身(即logger = Logger.new)但结果是一样的。

您知道如何在我的 resque worker 中实际记录一些内容吗?

谢谢!

【问题讨论】:

标签: ruby logging resque


【解决方案1】:

我的环境:rails 5.0.1,resque:1.26.0。

我尝试在config/initializers/resque.rblib/tasks/resuqe.rake 中配置resque 记录器,它们都不适合我。

但在每个作业中配置 resque 记录器,这对我有用,尽管它并不完美。

# update_xxx_job.rb
class UpdateXxxJob
  def self.perform
    Resque.logger = Logger.new("#{Rails.root}/log/resque.log")
    Resque.logger.level = Logger::DEBUG   

    Resque.logger.info 'Job starts'
    ...
  end
end

更多详情请见another answer

【讨论】:

    【解决方案2】:

    您缺少启用打印信息日志的日志级别,根据您在此处链接的文档,您可以使用类似这样的东西

    Resque.logger.level = Logger::DEBUG
    

    然后,如果您查看Logger docs,它会将级别列为

    调试

    因此,如果您使用 logger.info,则需要 Logger::DEBUGLogger::INFO 才能显示记录的字符串。

    还要确保记录器初始化由运行工作程序的进程运行,而不仅仅是排队作业的进程。

    【讨论】:

    • 在过去的几天里,我尝试了几乎所有可以在互联网上找到的技术,包括你的。根本没有任何反应。我对您写的内容没有任何错误,但是根本没有记录任何内容。我真的不明白。
    • @henritroyat 那么你可能需要在你的环境中设置VERBOSE=1
    【解决方案3】:

    使用以下内容:

    Logger.new(path_to_log_file).info(anything)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多