在资源的日志中隐藏ActionController :: RoutingError

时间:2015-11-20 13:15:48

标签: ruby-on-rails ruby ruby-on-rails-4

我正在开发一个具有WP主页的rails应用程序,还有一些正在从WP加载的图像。在localhost上,我们无法访问导致日志中出现大量路由错误的WP内容,例如:

Started GET "/wp-content/uploads/2014/03/facebook-icon1.png" for 127.0.0.1 at 2015-11-20 15:10:48 +0200

ActionController::RoutingError (No route matches [GET] "/wp-content/uploads/2014/03/facebook-icon1.png"):
  actionpack (4.2.5) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (4.2.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'

考虑到页面上有5个图像,我们最终会为每个请求产生5个路由错误。 如何从开发环境中的日志中隐藏这些类型的错误?

2 个答案:

答案 0 :(得分:13)

有这个确切的问题。在initializers文件夹中创建一个logger.rb文件并添加以下代码:

# spammers were blowing up our logs
# this suppresses routing errors
if Rails.env.production?
    class ActionDispatch::DebugExceptions
      alias_method :old_log_error, :log_error
      def log_error(env, wrapper)
        if wrapper.exception.is_a?  ActionController::RoutingError
          return
        else
          old_log_error env, wrapper
        end
      end
    end
end

答案 1 :(得分:2)

也许这个silencer宝石可以帮到你。

用法:

在您的环境中:

require 'silencer/logger'

config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => [%r{^/wp-content/}]