如何将Rails错误记录到单独的日志文件中?

时间:2011-03-29 15:26:41

标签: ruby-on-rails logging

我们的生产日志很长,包含的不仅仅是错误。我想要第二个日志文件,只包含错误/异常。

这可能吗?

我们正在使用rails 2.x

感谢。

2 个答案:

答案 0 :(得分:7)

尝试以下方法。将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

答案 1 :(得分:6)

例如,要在名为log / exceptions.log

的文件中记录所有ActiveRecord :: Base错误
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