本番環境およびステージング中の Rails (3.2.17) アプリのすべてのロギングを 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 に送信されます)。
しかし、私はこのアプローチは非常に醜いと思います。誰かがこれに対してよりクリーンなアプローチを得ましたか?