0

health我有一个应用程序,其中 Nginx 反向代理向我的端点发出大量请求。我不想记录这些,所以我的输出日志更小。我还使用 JSON 将所有内容记录为 JSON Network.Wai.Middleware.RequestLogger.JSON,它具有将日志消息格式化为 JSON 的功能。

可以做的一件事是记录一个空的字节串,但我在想可能有某种方法可以不操作日志调用。我无法通过查看RequestLogger.wai-extra

有没有人建议如何构建自定义Middleware以不记录某些请求?

4

1 回答 1

2

我通过以下方式创建了一个自定义格式化程序:

-- | 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

这似乎工作正常。但是,我仍然想知道是否有更好的方法。

于 2019-01-03T04:41:01.953 回答