Как я могу регистрировать ошибки Rails в отдельный файл журнала?
Наши журналы производства длинны и содержат намного больше, чем просто ошибки. Мне нужен второй файл журнала с ошибками/исключениями.
Возможно ли это?
Мы используем рельсы 2.x
Спасибо.
Ответы
Ответ 1
Например, чтобы регистрировать все ошибки ActiveRecord:: Base в файле с именем log/exceptions.log
new_logger = Logger.new('log/exceptions.log')
new_logger.level = Logger::ERROR
new_logger.error('THIS IS A NEW EXCEPTION!')
ActiveRecord::Base.logger = new_logger
Для контроллеров и просмотра (поскольку в Logger LogView нет собственного журнала, поэтому он зависит от регистратора ActionController):
ActionController::Base.logger = new_logger
Ответ 2
Попробуйте следующее. Поместите метод rescue_from в ваш контроллер.
Я не тестировал это. Но, возможно, это ставит вас в правильном направлении.
class ApplicationController < ActionController::Base
rescue_from StandardError do |exception|
new_logger = Logger.new('log/exceptions.log')
new_logger.info('THIS IS A NEW EXCEPTION!')
new_logger.info(exception.message)
new_logger.info(exception.backtrace)
# Raise it anyway because you just want to put it in the log
raise exception
end
end
Если вы используете Rails 2.1 (также не проверены)
class ApplicationController < ActionController::Base
def rescue_action_in_public(exception)
new_logger = Logger.new('log/exceptions.log')
new_logger.info('THIS IS A NEW EXCEPTION!')
new_logger.info(exception.message)
new_logger.info(exception.backtrace)
# Raise it anyway because you just want to put it in the log
raise exception
end
end