4

프로덕션에서 내 레일 (3.2.17) 응용 프로그램의 모든 로깅을 이동하고 papertrail로 스테이징하려고합니다. 지금은이 같은 config/initializers/sidekiq.rb에 sidekiq에 대한 로거를 설정하기 위해 노력하고있어 :Sidekq를 papertrail과 함께 사용하기

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>' 

를 얻을 수를 I sidekiq에 로깅을위한 더미를 먼저 제공하십시오.

bundle exec sidekiq --index 0 --pidfile <PATH_TO_PID> --environment staging --daemon --logfile /dev/null 

이니셜 라이저가 이전 옵션보다 우선하는 것처럼 보이기 때문에 매력처럼 작동합니다 (로그는 papertrail로 전송됩니다).

하지만이 방법은 상당히 못 생깁니다. 누구나 청결한 접근이 있나요?

+0

이 [링크] (http://stackoverflow.com/questions/20058417/sidekiq-server-not-loading-configuration합니까 -file) 도움이 될까요? –

+0

사실이 경우 구성 파일이 사용되었습니다. 필자는 papertrail과 작동시키기 위해서 (적어도 다른 옵션은 보이지 않습니다.) 이니셜 라이저를 사용할 필요가 있습니다. – dabai

답변

0

sidekiq의 소유자와 논의한 그는 좋은 지적을했습니다. 프로세스가 시작될 때부터 초기화 프로그램이 실행될 때까지 많은 일이 잘못 될 수 있습니다. 로거가 이니셜 라이저에서만 초기화되는 경우 이전에 발생한 모든 항목이 로그에 나타나지 않습니다.

나는 아마 sidekiq 소유자가 추천 appoach로 이동합니다 :

bundle exec sidekiq | logger -t sidekiq