ActiveJob + Sidekiq 6.0.3: Как писать в лог-файл?

Я использую Sidekiq для выполнения некоторых фоновых задач. Я также пытаюсь записать некоторые сообщения от этих заданий в файл журнала, но мне не удалось выполнить эту простую задачу.

Пример работы, которой я занимаюсь

class TestJob < ApplicationJob
  queue_as :default

  def perform
    text = 'Print me to a file!'
    Rails.logger.error "Rails.logger.info : #{text}"
    logger.error "logger.info : #{text}"
  end
end

Запуск TestJob.perform_now, например, в действии контроллера, работает, как и ожидалось, печатая сообщения на выходе терминала сервера, а также на logs/development.log.

Но запуск TestJob.perform_later не печатает мои сообщения. В любом месте. Ни к терминалу Sidekiq, ни к серверному терминалу, ни к файлам журналов, ни к чему.

Я попытался перенаправить журналы, как это было предложено в вики Sidekiq Logging. Но и там сообщения не печатались.

Я чувствую, что могу упустить что-то важное.


person hananamar    schedule 04.12.2019    source источник
comment
Если Sidekiq запущен и принимает вашу работу, log/sidekiq.log будет иметь записи start и done для TestJob. Нет ли там ошибок?   -  person cschroed    schedule 04.12.2019
comment
@cschroed нет...   -  person hananamar    schedule 07.12.2019
comment
Если задание выполняется, вы можете поместить это в начало своего метода perform: raise Rails.logger.inspect. Затем в очереди Sidekiq Dead Job вы увидите дополнительную информацию о том, каков уровень журнала и куда он отправляет свои выходные данные.   -  person cschroed    schedule 08.12.2019


Ответы (1)


Попробуйте позвонить Sidekiq.logger, например:

    Sidekiq.logger.error "logger.info : #{text}"

Помещение «logger.info» в журнал ошибок может быть немного странным, но я просто взял пример из вопроса.

person cdmo    schedule 23.04.2020