我现在正在寻找一种在另一个日志文件中仅记录 404 错误而不是其他错误的方法。
有没有办法用 ruby 记录器或 log4r 来做到这一点,这样日志记录只发生在新创建的日志文件中?
我现在正在寻找一种在另一个日志文件中仅记录 404 错误而不是其他错误的方法。
有没有办法用 ruby 记录器或 log4r 来做到这一点,这样日志记录只发生在新创建的日志文件中?
虽然我没有具体的建议,但我确实对这类事情有一些经验。也许这会有所帮助...
--
我编写了一个 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,它可能会超时,这也是非常严格的。
error_log 的错误一旦发生就会被记录,因此您不能配置单独的 error_log 来记录特定错误(与 access_log 相比)。
但是,您可以控制是否记录“未找到”错误 - 为此有配置指令“log_not_found”,请参阅 http://nginx.org/r/log_not_found。