Rails 5.2 / Ruby 2.5: как заставить замолчать журналы спам-запросов WEBrick? - PullRequest
0 голосов
/ 15 января 2019

Я только что обновил приложение с Ruby 2.3 / Rails 4.2 до Ruby 2.5.3 / Rails 5.2.2. Обновление прошло гладко, но теперь, когда я тестирую звонки на моем сервере разработки, я замечаю, что каждый запрос страницы генерирует две дополнительные строки журнала в STDOUT (но не в моем Rails log/development.log), которые, как я понимаю, приходят из WEBrick, а не из Rails. Я хотел бы удалить их. См. Ниже, например, первая строка - это журнал запросов Rails (я хочу сохранить его), а следующие две - уродливые и избыточные:

...
■ [GET /guiding_principles] params={} user=51 (Topher Hunt) status=200 duration=505.81ms
::1 - - [14/Jan/2019:21:22:45 CET] "GET /guiding_principles HTTP/1.1" 200 8840
http://localhost:3000/guiding_principles -> /guiding_principles
...

Если вы запускаете новый сервер WEBrick, похоже, что есть способы настройки или, возможно, протоколирование тишины, см., Например, здесь и здесь . Но я не вижу четкого способа (или какого-либо руководства о том, как) сделать это в контексте Rails.

Как я могу сказать WEBrick не регистрировать что-либо при каждом запросе?

1 Ответ

0 голосов
/ 15 января 2019

Я нашел обезьяну-заплатку, которая справляется с этой задачей. После установки этого патча строки журнала для каждого запроса не будут создаваться, но строки инициализации (напоминающие о том, что вы используете WEBrick) по-прежнему отображаются.

# (config/initializers/webrick.rb)
# Silence WEBrick's verbose per-request logging
# See https://github.com/ruby/ruby : /lib/webrick/httpserver.rb
if Rails.env.development?
  require 'webrick'

  module WEBrick
    class HTTPServer
      def access_log(a, b, c)
        nil
      end
    end
  end
end
...