Настройте регистратор запросов Wai Middleware, чтобы отбрасывать (не регистрировать) некоторые запросы - PullRequest
0 голосов
/ 03 января 2019

У меня есть приложение, в котором обратный прокси-сервер Nginx делает много запросов к моей health конечной точке. Я бы не хотел регистрировать их вообще, поэтому мои выходные журналы меньше. Я также регистрирую все как JSON, используя Network.Wai.Middleware.RequestLogger.JSON, который имеет функцию для форматирования сообщений журнала как JSON.

Одна вещь, которую я мог бы сделать, - записать пустую строку теста, но я подумал, что может быть какой-то способ запретить вызов журнала. Я не могу понять, как это сделать, глядя на различные функции RequestLogger в wai-extra.

У кого-нибудь есть рекомендации по созданию пользовательского Middleware, чтобы не регистрировать определенные запросы?

1 Ответ

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

Я создал пользовательский форматер следующим образом:

-- | Wai Application Middleware logger
jsonRequestLogger :: IO Middleware
jsonRequestLogger = mkRequestLogger
    $ def { outputFormat = CustomOutputFormatWithDetails dontLogHealthEndpoint }


dontLogHealthEndpoint :: OutputFormatterWithDetails
dontLogHealthEndpoint date req status responseSize duration reqBody response =
    if B.isInfixOf "health" $ rawPathInfo req
        then toLogStr B.empty
        else formatAsJSON date req status responseSize duration reqBody response

Кажется, это работает нормально. Тем не менее, я все еще хотел бы знать, есть ли лучший способ.

...