2016-04-05 5 views
1

Приложение rails4 работает с докере. Он запускает задачу рейка для извлечения сообщений из AWS SQS.Проблема с журналом в Rails4 с выполнением команды Docker rake

Проблема, с которой я столкнулся, заключается в том, что журналы не могут отображаться на консоли во времени. Консоль ничего не показывает до тех пор, пока не возникнет ошибка/ошибка. Другими словами, если мое приложение работает нормально, журналы не приходят на консоль. Но если приложение пошло не так, все журналы (информация, предупреждение и ошибка) объединяются!

Я уже настроить конфигурации/production.rb, как удар:

config.logger = Logger.new(STDOUT) 
config.logger.level = Logger.const_get('INFO') 
config.log_level = :info 

Я Google «Журнал рейк задача не работает», но ничего полезного. Является ли это проблемой журнала рельсов или проблемой журнала задач рейка или, может быть, проблемой докеров?

Надеясь, что получите совет!

+0

Я вижу подобный вопрос, где любая рейка задача, которую я призываю не выводит на STDOUT, пока задача грабли не вышла. Я проверил это со следующим кодом в задаче rake: 'loop {puts" in loop "; sleep 2} '. Пока задача запущена, ничего не появляется в STDOUT, но как только она завершает оба экземпляра «in loop», немедленно выходите на выход. Я не нашел, почему это так, но я отправлю туда, если я это выясню. – alexpls

ответ

0

для рельсов 4.x уровень журнала конфигурации

# Enable stdout logger 
config.logger = Logger.new(STDOUT) 

# Set log level 
config.log_level = :ERROR 

Уровень регистратор устанавливается на экземпляре регистратора из config.log_level по адресу: (https://github.com/rails/rails/blob/v4.2.4/railties/lib/rails/application/bootstrap.rb#L70)

+0

Спасибо, мужик! Но я не думаю, что это исправит мою проблему. Журналы, включая информацию, предупреждение и ошибку, не будут отображаться вовремя. Они только приходят на консоль, когда происходит исключение. –

+0

** Конфигурация ENV ** # по умолчанию: ОШИБКА config.log_level = ENV.fetch ("LOG_LEVEL", "ERROR") ** Запуск теста из оболочки ** # Log Уровень: INFO (значение находится в верхнем регистре в bootstrap.rb) $ LOG_LEVEL = info rake test # Уровень журнала: ОШИБКА $ LOG_LEVEL = тест отладки – JohnPaul

3

Попробуйте отключить буферизацию вывода для STDOUT , Вы можете сделать это, добавив следующую строку в передней задачи:

$stdout.sync = true 
Смежные вопросы