停止记录ActionController :: RoutingError Rails 3.2

8
如何禁用 ActionController :: RoutingError 错误的日志记录? 我的生产日志文件中充满了搜索phpMyAdmin和其他内容的机器人。 然后真正的应用程序错误被忽视了。 请帮帮我。 我正在运行Rails 3.2和Passenger。
在我的routes.rb中,我将所有其他网址映射到get“:code”=>“shared#code”,然后,如果找不到,我会显示一条带有消息的页面。 但是当机器人搜索像http://mywebsite.com/phpMyAdmin/index.php这样的url时,就会显示经典的错误页面,“您要查找的页面不存在。”这很好。但是我不想在日志文件中记录这些错误。

谢谢你问了我正要问的问题。 - zwol
1个回答

19

用于日志记录/显示错误的中间件是 ActionDispatch::DebugExceptions。你可以重写 log_error 方法,例如将以下内容放在一个初始化器中:

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

谢谢您的帮助。但我可以问一下,我应该把它放在哪里?我的意思是哪个文件和文件夹。 - Juraj Ivan
初始化程序位于config/initializers文件夹下。 - Frederick Cheung
我曾经试图在生产环境中移除DebugExceptions,但是它带来的麻烦比解决问题还要多,所以我不得不把它们放回去。可惜我没有记录下这种方法存在的问题。 - Roman
说实话,我不知道。 - Frederick Cheung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接