设置 Wai 中间件请求记录器以丢弃(不记录)一些请求
Setup Wai Middleware request logger to drop (not log) some requests
我有一个应用程序,其中 Nginx 反向代理向我的 health
端点发出大量请求。我不想记录这些,所以我的输出日志更小。我还使用 Network.Wai.Middleware.RequestLogger.JSON
将所有内容记录为 JSON,它具有将日志消息格式化为 JSON.
的功能
我可以做的一件事是记录一个空的字节串,但我认为可能有一些方法可以不对日志调用进行操作。通过查看 wai-extra
.
中的各种 RequestLogger
函数,我不知道该怎么做
有人对如何构建自定义 Middleware
以便不记录某些请求有建议吗?
我通过以下方式创建了自定义格式化程序:
-- | 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
这似乎工作正常。不过,我还是想知道有没有更好的办法。
我有一个应用程序,其中 Nginx 反向代理向我的 health
端点发出大量请求。我不想记录这些,所以我的输出日志更小。我还使用 Network.Wai.Middleware.RequestLogger.JSON
将所有内容记录为 JSON,它具有将日志消息格式化为 JSON.
我可以做的一件事是记录一个空的字节串,但我认为可能有一些方法可以不对日志调用进行操作。通过查看 wai-extra
.
RequestLogger
函数,我不知道该怎么做
有人对如何构建自定义 Middleware
以便不记录某些请求有建议吗?
我通过以下方式创建了自定义格式化程序:
-- | 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
这似乎工作正常。不过,我还是想知道有没有更好的办法。