我有一个使用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工作人员中记录某些内容?
谢谢!
答案 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::DEBUG
或Logger::INFO
才能显示已记录的字符串。
还要确保记录器初始化由运行工作程序的进程运行,而不仅仅是进程排队作业。
答案 2 :(得分:0)
我的环境:rails 5.0.1,resque:1.26.0。
我尝试在config/initializers/resque.rb
和lib/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中的详细信息。