У меня есть приложение Rails 5.2.3 с Ruby 2.4.5. Я обнаружил странную проблему, что информация о запросе регистрируется дважды в stdout. Вот конфигурация журнала в config / средах / product.rb
config.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
config.log_tags = [ lambda {|req| "#{req.cookie_jar["_session_id"]}" }, :remote_ip, :uuid ]
Предположительно, он будет помечать каждый журнал удаленным ip и запросить uuid, и он делает это для большинства журналов, за исключением странных дополнительныхвойти для запроса. В следующем примере последняя строка представляет собой дублированный журнал для запроса без тега :
[INFO] [2019-10-28 06:11:45 UTC] [127.0.0.1] [f6de1900-a7e5-4486-8b73-7095d0cacb35] Started GET "/api/v1/nodes?pageSize=20&pageNumber=1" for 127.0.0.1 at 2019-10-28 06:11:45 +0000
[INFO] [2019-10-28 06:11:45 UTC] [127.0.0.1] [f6de1900-a7e5-4486-8b73-7095d0cacb35] Processing by Api::V1::NodesController#index as XML
...
...
[INFO] [2019-10-28 06:20:02 UTC] [127.0.0.1] [993e0db4-3995-41ef-851a-bfea1bc25781] Completed 200 OK in 1084ms (Views: 341.9ms | ActiveRecord: 150.6ms)
127.0.0.1 - - [28/Oct/2019:06:20:02 +0000] "GET /api/v1/nodes?pageSize=20&pageNumber=1 HTTP/1.1" 200 - 1.1347
Я проверил конфигурации, другие настроенные регистраторы не настроены. Следствием этого является то, что на стороне клиента есть таймер для проверки состояния уведомлений каждые 5 секунд. Я добавил глушитель журналов, чтобы избежать регистрации таких запросов:
# config/application.rb
config.middleware.insert_before Rails::Rack::Logger, LogSilencer, silenced: /notification_messages/
# lib/log_silencer.rb
class LogSilencer
def initialize(app, opts = {})
@app = app
@silenced = opts.delete(:silenced)
end
def call(env)
if @silenced.match(env['PATH_INFO'])
Rails.logger.silence do
@app.call(env)
end
else
@app.call(env)
end
end
end
Это позволяет избежать регистрации в журнале с тегами, но журналы дублированных запросов все еще существуют, тогда стандартный вывод заполнен этим запросом
127.0.0.1 - - [28/Oct/2019:07:04:21 +0000] "GET /api/v1/notification_messages/to_notify HTTP/1.1" 200 - 0.0118
127.0.0.1 - - [28/Oct/2019:07:04:26 +0000] "GET /api/v1/notification_messages/to_notify HTTP/1.1" 200 - 0.0140
127.0.0.1 - - [28/Oct/2019:07:04:31 +0000] "GET /api/v1/notification_messages/to_notify HTTP/1.1" 200 - 0.0137
127.0.0.1 - - [28/Oct/2019:07:04:36 +0000] "GET /api/v1/notification_messages/to_notify HTTP/1.1" 200 - 0.0149
...
Потратил целый день, пытаясь выяснить, кто сгенерировал этот журнал, но никакой подсказки ... Хотел бы попросить помощи о том, как отключить этот журнал, поэтому сделайте данные журнала ясными ...
Спасибо!