2013-08-07 19 views
5

gelen çağrı dayalı farklı bir günlükçüye oturum Arka plan işleri çalıştırmak için Sidekiq 2.12 kullanan bir Rails 3.2 tabanlı bir uygulama var. Sidekiq işleri, etkileşimli Rails uygulamasıyla aynı yöntemleri arayabilir. Sidekiq'den çağrıldığında Sidekiq günlüğüne giriş yapmak ve Rails denildiğinde Rails günlüğüne giriş yapmak için yöntemler istiyorum. Bunu yapmak için temiz bir yol arıyorum ama şimdiye kadar boş kalmış.Sidekiq veya Rails

Her iki ortamda da hem Sidekiq::Logging.logger hem de Rails.logger tanımlanır ve çalışır.

  • Doğru kaydediciyi seçmek için her kayıt girişimi sırasında çağrı yığınını incelemek istemiyorum.
  • Hem Sidekiq hem de Rails'den çağrılabilen her işleve bir log parametresini bir işlev parametresi olarak iletmek istemiyorum.

Ben Sidekiq Raylar günlükçüsüne oturum daima sonra başlatma işlemi sırasında kendi kaydedicisi ile Raylar logger değiştirip sahip olmaktır muhtemelen doğru şeyin düşünüyorum, ama sonra çalışan bir başlatıcı kanca bulamıyor Rails logger kuruldu ancak Sidekiq işleri başlatılmadan önce sadece Sidekiq tarafından çalıştırılıyor.

Böyle bir kanca var mı? Eğer öyleyse, lütfen bana anlat. Aksi takdirde, lütfen Sidekiq Rails çalışma ortamına dayalı olarak günlük çıkışının nasıl yeniden yönlendirileceğine dair diğer önerileri sağlayın.

cevap

23

Hem Sidekiq hem de Rails, Ruby StdLib'den Logger uyumlu sınıfları kullanır.

Sidekiq sunucu yapılandırma bloğunda Sidekiq kaydediciyi kullanmak için Rails logger'ı yeniden yapılandırabilmeniz gerekir. config/inititializers/sidekiq.rb gibi bir dosya oluşturmak/Bul: Sidekiq.configure_server çağrısına geçirilen blok sadece sizin Raylar uygulama sunucusu veya konsolda çalışan istemci dahilinde, Sidekiq arka uç Sunucu bileşeni içinde yürütülür

Sidekiq.configure_server do |config| 
    Rails.logger = Sidekiq::Logging.logger 

    # Sidekiq other server config 
    ... 
end 

.

+0

Anlatabildiğim kadarıyla, Rails uygulamasının da Sidekiq kaydedicisini kullanmasına neden olacak. Ray uygulamasının (web isteklerini cevaplama), Sidekiq kaydedicisine giriş yapmak için Rails logger ve Sidekiq işlemlerine giriş yapmasını istiyorum. –

+3

Bu doğru değil. Sidekiq.configure_server çağrısına iletilen blok, sadece Rails uygulama sunucunuzda veya konsolunuzda çalışan istemcinin içinde değil, Sidekiq arka ucunun Sunucu bileşeni içinde yürütülür. – Winfield