Как я могу регистрировать ошибки Rails в отдельный файл журнала? - PullRequest
13 голосов
/ 29 марта 2011

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

Возможно ли это?

Мы используем рельсы 2.x

Спасибо.

Ответы [ 2 ]

7 голосов
/ 29 марта 2011

Попробуйте следующее. Поместите метод 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
6 голосов
/ 29 марта 2011

Например, чтобы регистрировать все ошибки 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

Для контроллеров и представления (поскольку у регистратора ActionView нет собственного регистратора, поэтому это зависит от регистратора ActionController):

ActionController::Base.logger = new_logger
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...