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