让Sidekiq与papertrail一起工作

4

我试图将生产和预发布环境中我使用的rails (3.2.17)应用程序的所有日志移动到papertrail。现在,我正在尝试设置sidekiq的记录器,方法是在config/initializers/sidekiq.rb中进行如下设置:

Sidekiq.configure_server do |config|
  Sidekiq::Logging.logger = RemoteSyslogLogger.new('logs.papertrailapp.com', ENV.fetch('PAPERTRAIL_PORT'), program: "sidekiq-#{Rails.env}")
end

当我尝试使用以下命令启动 sidekiq 时:
bundle exec sidekiq --index 0 --pidfile <PATH_TO_PID> --environment staging --daemon

我明白

You really should set a logfile if you're going to daemonize
...bundle/ruby/2.0.0/gems/sidekiq-2.17.4/lib/sidekiq/cli.rb:141:in `daemonize'
...bundle/ruby/2.0.0/gems/sidekiq-2.17.4/lib/sidekiq/cli.rb:39:in `parse'
...bundle/ruby/2.0.0/gems/sidekiq-2.17.4/bin/sidekiq:7:in `<top (required)>'
...bundle/ruby/2.0.0/bin/sidekiq:23:in `load'
...bundle/ruby/2.0.0/bin/sidekiq:23:in `<main>'

然而,如果我首先为sidekiq提供一个虚拟的日志记录:
bundle exec sidekiq --index 0 --pidfile <PATH_TO_PID> --environment staging --daemon --logfile /dev/null

它的工作效果很好(日志被发送到Papertrail),因为初始化程序似乎覆盖了先前的选项。

但我觉得这种方法相当丑陋。有没有更加简洁的方法?


这个链接对你有帮助吗? - Rajesh Omanakuttan
不是这样的,在那种情况下使用了一个配置文件。我需要使用(至少我没有看到其他选项)一个初始化器来使它与papertrail配合工作。 - Benjamin
1个回答

0
我与Sidekiq的所有者讨论了这个问题,他提出了一个很好的观点:从进程启动到初始化程序运行期间,很多事情都可能出错。如果日志记录器仅在初始化程序中初始化,则发生在此之前的所有内容都不会出现在任何日志中。
我可能会采用Sidekiq所有者推荐的方法:
bundle exec sidekiq | logger -t sidekiq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接