我尝试将我的rails(3.2.17)app的所有日志记录移动到生产中并暂存到papertrail。现在我尝试在config/initializers/sidekiq.rb
中设置sidekiq的记录器,如下所示:
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),因为初始化器似乎覆盖了以前的选项。
但我发现这种做法非常难看。有人对此采取了更清洁的方法吗?
答案 0 :(得分:0)
我和sidekiq的老板讨论过这个问题,他提出了一个很好的观点:从启动过程到初始化程序运行的时间,很多事情都会出错。如果记录器仅在初始化程序中初始化,那么以前发生的所有内容都不会出现在任何日志中。
我可能会选择sidekiq所有者推荐的appoach:
bundle exec sidekiq | logger -t sidekiq