2015-11-20 34 views
2

我正在开发一个具有WP主页的rails应用程序,以及一些正在从WP加载的图像。在本地主机上我们没有进入,导致其在日志中很多路由的错误,例如,在WP内容:在资产日志中隐藏ActionController :: RoutingError

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张请求。 如何从dev环境中的日志中隐藏这些类型的错误?

+0

试试这个:'config.assets.logger = nil' –

+0

@PardeepDhingra不工作 – rmagnum2002

回答

9

有了这个确切的问题。在您的初始化文件夹中创建一个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 
+0

谢谢乔舒亚,我用你的建议代码,但我用它的开发环境。 此外,您的解决方案几乎可以工作,但它仍然会生成一些日志,请参阅以下链接:https://gist.github.com/rmagnum2002/521c213f44077430caf1 是否有任何方法可以完全隐藏这些类型的日志或使它们尽可能短可能?谢谢。 – rmagnum2002

+0

删除条件“if Rails.env.production?”它会抑制所有环境中的路由错误。 – Joshua

+0

我只需要这个用于开发,所以我使用'如果Rails.env.development?'。另外,正如您在上面发布的要点中所看到的,它仍会生成日志,比我承认之前的日志要短,但仍有一些痕迹。任何机会将他们删除..离开让我们只说要求..谢谢。 – rmagnum2002

1

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

用法:

在您的环境:

require 'silencer/logger' 

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

你能更准确?它究竟做了什么?原始海报如何使用它?等等,请添加一个代码示例。 –

+0

不,我甚至试图沉默所有的GET请求,为了测试的目的,如果这可以工作。 – rmagnum2002

+0

很抱歉听到这个消息。我安装了这个gem,把这个配置添加到我的application.rb中,它对我来说效果很好。 – dinglixiang

相关问题