1

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

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

4

2 回答 2

2

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

--

我编写了一个 gem exception_handler,它基本上插入到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,它可能会超时,这也是非常严格的。

于 2015-12-10T14:29:46.410 回答
0

error_log 的错误一旦发生就会被记录,因此您不能配置单独的 error_log 来记录特定错误(与 access_log 相比)。

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

于 2015-12-10T13:56:26.737 回答