2014-10-03 8 views
0

Как сделать ведение журналов Rails одинаково во всех средах?Сделать постоянный ведение журнала Rails

  • В настоящее время, когда я вхожу с использованием puts в среде Windows/WEBrick появляется вывод в консоли, но не отображается в стандартных лог-файлов.
  • Когда я использую Rails.logger, сообщения регистрируются только в файле журнала.

Когда я использую оба варианта, это создает проблемы в среде Apache/Passenger, потому что все выходные данные консоли записываются в файл журнала, и я получаю двойные строки для каждого события регистрации.

ответ

1

Вы не должны использовать puts для реальной регистрации. Это может быть полезно для отладки, но это не правильный механизм ведения журнала.

Если вы хотите что-то зарегистрировать, то правильный способ - использовать Rails.logger.

Rails.logger.info "something" 

По умолчанию регистратор регистрируется только в файлах журнала. Некоторые серверы, такие как «Пассажир», были использованы для вывода журналов в консоли, но это не стандартное поведение.

Если вы хотите также войти в консоль, вы можете установить, что регистратор ведет себя по-другому (например) в среде разработки. Просто создайте новый журнал с пользовательскими действиями.

Регистратор Rails является ActiveSupport::Logger и он наследует от Руби Logger

примера, чтобы войти в консоли в развитии назначить следующий логгер в среде разработки

Rails.logger = ActiveSupport::Logger.new(STDOUT) 

Если вы хотите, чтобы войти как к файлам и консоли, создайте собственный класс регистратора, который проксирует каждый регистратор. вызовите два экземпляра, один - регистратор файлов, а другой - регистратор консоли.

Однако самое простое решение - tail -f вести журнал разработки на другой вкладке консоли, чтобы получить доступ к записям журнала.