Вход в рабочий стол Sidekiq
Я пытаюсь зарегистрировать прогресс моего работника sideqik, используя tail -f log/development.log
в разработке и heroku logs
в процессе производства.
Однако все внутри рабочего и все, вызванные рабочим, не регистрируются. В приведенном ниже коде регистрируется только 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.info
или Sidekiq.logger.info
не регистрируются в лог-потоке. Заработал, заменив Rails.logger.info
на puts
.
Ответы
Ответ 1
Существует ссылка Sidekiq.logger
и просто logger
, которую вы можете использовать в своих рабочих. Значение по умолчанию должно быть в STDOUT, и вы должны просто направлять свой вывод в производство в путь к файлу журнала по вашему выбору.
Ответ 2
@migu, попробовали ли вы команду ниже в config/initializer.rb
?
Rails.logger = Sidekiq::Logging.logger