Ruby on rails 如何在生产日志文件中禁用Rails RoutingError stacktrace打印输出?

Ruby on rails 如何在生产日志文件中禁用Rails RoutingError stacktrace打印输出?,ruby-on-rails,logging,stack-trace,production,Ruby On Rails,Logging,Stack Trace,Production,在我的Production rails应用程序中,我收到了所有类型的随机攻击请求asp、zip和rar文件。Rails按预期呈现404页面,但我的生产日志文件被RoutingError stacktrace转储阻塞,如下所示 我的问题是:我可以在Apache/Passenger中使用某些模式阻止URL吗?或者至少我可以将Rails配置为只记录错误本身,而不打印整个stacktrace?谢谢 Processing ApplicationController#index (for 100.222.2

在我的Production rails应用程序中,我收到了所有类型的随机攻击请求asp、zip和rar文件。Rails按预期呈现404页面,但我的生产日志文件被RoutingError stacktrace转储阻塞,如下所示

我的问题是:我可以在Apache/Passenger中使用某些模式阻止URL吗?或者至少我可以将Rails配置为只记录错误本身,而不打印整个stacktrace?谢谢

Processing ApplicationController#index (for 100.222.237.7 at 2011-03-22 10:59:54) [GET]

ActionController::RoutingError (No route matches "/include/upfile_flash.asp" with {:host=>"www.myhost.com", :method=>:get, :domain=>"myhost.com", :subdomain=>"www"}):
  passenger (2.2.15) lib/phusion_passenger/rack/request_handler.rb:92:in `process_request'
  passenger (2.2.15) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
  passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:441:in `start_request_handler'
  passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:381:in `handle_spawn_application'
  passenger (2.2.15) lib/phusion_passenger/utils.rb:252:in `safe_fork'
  passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:377:in `handle_spawn_application'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:163:in `start'
  passenger (2.2.15) lib/phusion_passenger/railz/application_spawner.rb:222:in `start'
  passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:253:in `spawn_rails_application'
  passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
  passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:247:in `spawn_rails_application'
  passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
  passenger (2.2.15) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
  passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:246:in `spawn_rails_application'
  passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:145:in `spawn_application'
  passenger (2.2.15) lib/phusion_passenger/spawn_manager.rb:278:in `handle_spawn_application'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `__send__'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
  passenger (2.2.15) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'

Rendering /myapp/public/404.html (404 Not Found)

您可以在所有其他路由之后添加一个“捕获所有”路由,以捕获这些内容并呈现您选择的控制器/操作:

match '*' => 'errors#not_found'
如果愿意,您甚至可以选择仅匹配.asp或任何内容:

match '*.:format' => 'errors#not_found', :constraints => {:format => /(asp|zip|rar)/i}
Rails 4和5回答:

match '*any', to: 'not_found#anything', via: [:get, :post]
若要匹配通配符参数,必须为其指定名称—
any

class NotFoundController < ApplicationController
  def anything
    Logger.new('log/not_found.log').info(request.fullpath)
    # To render nothing:
    # head :not_found #Rails 5
    # render nothing: true, status: :not_found # for Rails 4

    #To render 404 page
    render file: 'public/404.html', status: :not_found, layout: false
  end
end
class NotFoundController