2013-07-12 53 views
14

我正在嘗試使用開發中的tail -f log/development.log和生產中的heroku logs來記錄我的sideqik工作人員的進度。登錄Sidekiq worker

但是,worker中的所有內容和worker調用的所有內容都不會被記錄。在下面的代碼中,只有TEST 1被記錄。

我該如何記錄員工和工人呼叫的班級內的所有內容?

# 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 

更新

我還是不明白,爲什麼Rails.logger.infoSidekiq.logger.info不登錄到日誌流。取代Rails.logger.infoputs工作。

回答

8

有一個Sidekiq.logger和簡單的logger參考,你可以在你的工人中使用。默認情況下應該是STDOUT,並且您應該將生產中的輸出指向您選擇的日誌文件路徑。

+1

謝謝。 'logger.info「一些日誌」'登錄到我啓動'bundle exec sidekiq'的終端窗口中,但不在development.log中。我試過'bundle exec sidekiq 2>&1 | logger -t sidekiq「,但是然後日誌無處顯示。 – migu

+0

同樣的問題。這不應該被標記爲解決方案。 – johnnygoodman

1

@migu,你試過config/initializer.rb下面的命令嗎?

Rails.logger = Sidekiq::Logging.logger