Rails在单独的日志文件中记录404错误

时间:2015-12-10 12:56:10

标签: ruby-on-rails ruby log4r

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

有没有办法用ruby logger或log4r来实现,这样只能在新创建的日志文件中进行日志记录?

2 个答案:

答案 0 :(得分:2)

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

-

我编写了一个名为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,它可能会超时。

答案 1 :(得分:0)

  

错误记录错误会在发生错误时记录,因此您无法记录错误   配置单独的error_log以记录特定错误(相反   to access_log)。

     

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