如何在纯ruby应用程序中使用Resger的Resque工作者

时间:2014-12-12 19:29:57

标签: ruby logging resque

我有一个使用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 = Logger.new),但结果是一样的。

您是否知道如何在我的resque工作人员中记录某些内容?

谢谢!

3 个答案:

答案 0 :(得分:1)

使用以下内容:

Logger.new(path_to_log_file).info(anything)

答案 1 :(得分:1)

您缺少启用打印信息日志的日志级别,根据您在那里链接的文档,您可以使用类似这样的内容

Resque.logger.level = Logger::DEBUG

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

  

DEBUG&lt;信息&lt;警告&lt;错误&lt;致命&lt; UNKNOWN

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

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

答案 2 :(得分:0)

我的环境: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中的详细信息。