对自定义存储的请求的.NET HttpLogging



我们在.NET6中工作,希望记录所有传入的请求。我们计划主要在DEV和TEST环境中允许这样做,但也可能暂时在PROD.中允许

新的HttpLogger听起来非常匹配。但它将输出到标准ILogger,在我们的例子中是Elastic。出于GDPR的原因,我们希望避免以不受控制的方式暴露潜在的敏感数据。

有人有其他解决方案吗:

  1. 将消息从HttpLogger重定向到其他存储
  2. 创建自定义中间件,以便能够探查请求并输出到自定义存储

我在两次阅读身体时发现了这篇有趣的帖子,但没能让它发挥作用:https://codetalk.in/posts/2022/01/04/read-request-body-multiple-times-in-asp-dot-net-core

您可以通过配置来做到这一点,例如在生产应用程序设置中,禁用Elastic的HTTP日志记录,并为文件记录器启用它,类似这样的事情(实际上取决于您的记录器和配置(:

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
},
"Elastic": {
"IncludeScopes": true,
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "None"
}
},
"File": 
{
"IncludeScopes": true,
"LogLevel": {
"Default": "None",
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
}
}
}
}

更严格地说,例如,将生产的HttpLoggingOptions配置为不记录某些字段。

最新更新