【发布时间】:2013-01-18 08:46:59
【问题描述】:
我有一个运行环境,其中包含用于调度目的的 Rails 应用程序、Sidekiq 和发条模块。
我有许多不同的工作人员,充满了 logger.debug 和 logger.info 指令,我偶尔需要激活其中一些工作人员的调试日志记录以了解发生了什么。 我喜欢 Sidekiq 记录器,我想使用它,因为它只需要工作人员中的“logger.debug”指令来完成它的工作。
我目前的设置错过了为一些工作人员激活 DEBUG 级别的可能性,而将其他工作人员留在标准 INFO 中。
现在我的每个工人都有这个初始化方法:
class SendMailOnStart
include Sidekiq::Worker
sidekiq_options :retry => false, :queue => :critical
def initialize
logger.level = Logger::INFO
end
.... ...
但是如果改变一个工人的级别,这个级别将被下一个指定的级别覆盖 - 例如。如果两个工人一起处理,第二个将“获胜”。
以优雅的方式实现这一目标的最佳方式是什么?
来自Java世界,我只想创建一个自定义记录器并将其放入每个worker中,复制Sidekiq记录器使用的输出格式,在每个worker中添加一个记录器方法
def logger
logger = MyLogger.new
end
并在需要时在初始化方法中更改级别
这是 Ruby 中最好的方法吗?
【问题讨论】: