【问题标题】:Remove ActiveJob lines from production.log and split it in error.log and std.log从 production.log 中删除 ActiveJob 行并将其拆分为 error.log 和 std.log
【发布时间】:2016-03-29 15:59:50
【问题描述】:

我刚刚加入了一个铁路项目,该项目使用 capistrano 进行部署,使用 sidekiq 进行异步任务。我了解 capistrano 使用 /current/log/production.log 来记录 rails 应用程序。

我设法将日志级别更改为警告级别,但我仍然拥有我认为是带有 ActiveJob 标记的 sidekiq 日志的信息行。我怎样才能控制这个记录器?

我还希望有更多的控制权,以便让记录器将 info+ 写入一个文件并将warning+ 写入另一个文件。我有这样做的标准方法吗?

【问题讨论】:

    标签: ruby-on-rails ruby logging capistrano sidekiq


    【解决方案1】:

    ActiveJob 与 ActiveRecord 一样,共享一个来自基类的记录器——例如,ActiveRecord::Base.logger。它是一个访问器,您可以为其分配自己的记录器,因此我会考虑使用以下内容创建一个初始化程序(config/initializers/loggers.rb):

    log_path = File.join(File.dirname(__FILE__), '..', '..', 'log', "activejob_#{Rails.env}.log")
    ActiveJob::Base.logger = Logger.new(log_path)
    

    如果消息来自 Sidekiq 而不是 ActiveJob(很可能),则将 ActiveJob::Base.logger 替换为 Sidekiq::Logging.logger

    【讨论】:

    • 感谢您的回复。您的猜测并没有解决我的问题,但帮助我放弃了 ActiveJob 作为记录器。问题是 sidekiq 本身正在写入日志。我仍然没有找到一种方法来控制从 capistrano 到 sidekiq 的日志级别,但我设法将 sidekiq 记录在不同的文件中。这暂时解决了问题。
    • 在此处查看 sidekiq 日志信息:github.com/mperham/sidekiq/wiki/Logging
    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    相关资源
    最近更新 更多