【问题标题】:Rails logging 404 errors in a separate logfileRails 在单独的日志文件中记录 404 错误
【发布时间】:2015-12-10 12:56:09
【问题描述】:

我现在正在寻找一种在另一个日志文件中仅记录 404 错误而不是其他错误的方法。

有没有办法用 ruby​​ 记录器或 log4r 来做,这样记录只发生在新创建的日志文件中?

【问题讨论】:

  • 你能给出上下文吗?为什么只需要404 错误?
  • @RichPeck 我必须与一些遗留代码作斗争,并且必须过滤其余的 404 错误以进行调试。

标签: ruby-on-rails ruby log4r


【解决方案1】:

虽然我没有具体的建议,但我确实对这类事情有一些经验。也许这会有所帮助...

--

我编写了一个名为 exception_handler 的 gem,它基本上插入到 exceptions_app 中间件中,允许您向控制器操作发送任何异常。

您可以做的一件事是使用此 gem 中的技术来捕获 404 异常,并使用它们执行您自己的日志记录:

#config/application.rb
...
config.exceptions_app = ->(env) { ApplicationController.action(:exception).call(env) } 

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   def exception
       @error_code = ActionDispatch::ExceptionWrapper.new(env, @exception).status_code
       [[own logging]] if @status == 404
   end
end

这将是一个开始;我不知道您将如何制作自己的日志文件等,而且从某种意义上说,如果错误不是 404,它可能会超时,这也是非常严格的。

【讨论】:

  • 谢谢,如果可以为我提供解决方案,我会尝试。但这是朝着正确方向迈出的一步:)
  • 没问题 - 让我知道进展如何。我今天得了重感冒,所以很遗憾没有达到最佳状态;否则会添加额外内容
【解决方案2】:

error_log 的错误一旦发生就会被记录下来,所以你不能 配置单独的 error_log 来记录特定的错误(相反 访问日志)。

但是,您可以控制是否记录“未找到”错误 - 为此有配置指令“log_not_found”,请参见 http://nginx.org/r/log_not_found.

【讨论】:

  • 这是 nginx 服务器的主题,已经有几年的历史了。我希望有人也需要处理 rails 中的错误。
猜你喜欢
  • 2011-07-25
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
相关资源
最近更新 更多