Нет сообщений журнала в production.log - PullRequest
9 голосов
/ 09 марта 2012

Я написал демонстрационное приложение HelloWorld Rails и протестировал его с WEBrick (оно даже не использует БД, это просто контроллер, который печатает «привет мир»). Затем я попытался развернуть его на локальном Apache с поддержкой Passenger. На самом деле этот тест предназначен только для того, чтобы заставить Пассажира работать (это мое первое развертывание на Apache). Теперь я даже не уверен, что Passenger работает, но я не получаю никаких ошибок на стороне Apache.

Когда я запускаю http://rails.test/, браузер показывает страницу ошибки Rails 500 - поэтому я предполагаю, что Passenger работает. Я хочу изучить журналы, но бывает, что production.log пуст! Не думаю, что это проблема с правами доступа, потому что, если я удаляю файл, он воссоздается при перезагрузке страницы. Я пытался изменить уровень журнала в conf/environments/production.rb, пытался вручную записать в файл журнала с производством консоли Rails и

 Rails.logger.error('asdf')

возвращает true, но ничего не записывается в production.log. Путь (полученный для Rails.logger.inspect) является правильным, и я отмечаю, что файл воссоздается, если я удаляю его вручную. Как я могу знать, что происходит?

(я уже проверил журналы Apache, плюс я установил самый высокий уровень отладки для Пассажира, но, похоже, это проблема с Rails, поэтому сервер не регистрирует ее)

Ответы [ 2 ]

13 голосов
/ 09 марта 2012

Предполагается, что вы используете Rails 3.2.1, это ошибка.Это было исправлено в 3.2.2 .

Если вы не можете обновить систему до 3.2.2 по какой-либо причине, этот комментарий на GitHub имеет обходной путь :

# config/initializers/patch_rails_production_logging.rb
Rails.logger.instance_variable_get(:@logger).instance_variable_get(:@log_dest).sync = true if Rails.logger
3 голосов
/ 22 февраля 2013

Настройка этого работает на Rails 3.2.11:

Rails.logger = ActiveSupport::BufferedLogger.new(Rails.root.join("log","production.log"))
...