2013-07-12 14 views
14

Próbuję zarejestrować postęp mojego pracownika sideqik przy użyciu tail -f log/development.log w rozwoju i heroku logs w produkcji.Zaloguj się do pracownika Sidekiq

Jednak wszystko wewnątrz pracownika i wszystko, co wywołuje pracownik, nie jest rejestrowane. W poniższym kodzie zapisywane jest tylko TEST 1.

Jak mogę rejestrować wszystko wewnątrz pracownika i klasy wywoływane przez pracownika?

# app/controllers/TasksController.rb 
def import_data 
    Rails.logger.info "TEST 1" # shows up in development.log 
    DataImportWorker.perform_async 
    render "done"   
end 

# app/workers/DataImportWorker.rb 
class DataImportWorker 
    include Sidekiq::Worker 

    def perform  
    Rails.logger.info "TEST 2" # does not show up in development.log 

    importer = Importer.new 
    importer.import_data 
    end 
end 


# app/controllers/services/Importer.rb  
class Importer 
    def import_data 
    Rails.logger.info "TEST 3" # does not show up in development.log 
    end 
end 

Aktualizacja

ja nadal nie rozumiem, dlaczego Rails.logger.info lub Sidekiq.logger.info nie zalogujesz do strumienia dziennika. Działa to przez zastąpienie Rails.logger.info przez puts.

Odpowiedz

8

Istnieje odniesienie Sidekiq.logger i po prostu logger, z którego można korzystać w ramach swoich pracowników. Wartością domyślną powinno być STDOUT i powinieneś po prostu skierować wyjście w produkcji do wybranej ścieżki pliku dziennika.

+1

Dzięki. 'logger.info" Niektóre logi "' loguje się do okna terminala, w którym uruchomiłem 'bundle exec sidekiq', ale nie w development.log. Próbowałem 'bundle exec sidekiq 2> & 1 | logger -t sidekiq', ale dzienniki nie pojawiają się nigdzie. – migu

+0

Ten sam problem. Nie powinno to być oznaczane jako rozwiązanie. – johnnygoodman

1

@migu, czy wypróbowałeś poniższe polecenie w config/initializer.rb?

Rails.logger = Sidekiq::Logging.logger 
Powiązane problemy