减少 HttpClient 日志的冗长程度

问题描述 投票:0回答:3

我目前正在编写一个 .NET 6 应用程序,它会进行一些 REST 调用。

由于某种原因,当进行这些调用时,HttpClient 会记录以下内容:

[15:33:15 INF] Start processing HTTP request GET URL_GOES_HERE
[15:33:15 INF] Sending HTTP request GET URL_GOES_HERE
[15:33:15 INF] Received HTTP response headers after 70.5393ms - 200
[15:33:15 INF] End processing HTTP request after 73.441ms - 200

由于我拨打的电话数量较多,这使得我的日志平台难以导航。

我在网上找不到任何关于如何静音这些日志的文档。他们似乎是 .NET 6 的新手?至少在开始这个新项目之前我还没有见过他们。

我发现 this github repo 可以解决这个问题,但是,我不想只是为了沉默一些日志而拉入第三方包。

我的应用程序中有其他“信息”级别日志,这意味着我无法抑制整个级别。

真的没有本机方法来静默来自 HttpClient 的这些日志吗?

c# .net logging dotnet-httpclient .net-6.0
3个回答
7
投票

日志设置在 appsettings.json 文件(或 appsettings.development.json 文件)中设置:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "System.Net.Http.HttpClient": "Warning"
    }
  },
  "AllowedHosts": "*"
}

将默认值更改为“警告”或“错误”(或更高)将删除较低级别的消息(例如您收到的信息消息)。


4
投票

要具体设置

HttpClient
的日志详细程度,请将此行添加到
LogLevel
设置中:

"System.Net.Http.HttpClient": "Warning"

您的

appsettings.json
文件中的 LogLevel 部分可能如下所示:

"LogLevel": {
  "Default": "Information",
  "Microsoft": "Warning",
  "Microsoft.Hosting.Lifetime": "Information",
  "System.Net.Http.HttpClient": "Warning"
}

2
投票

我设法使用

Serilog
排除这些日志,我已经在应用程序中使用了它。

设置 LoggerConfiguration 时,您可以应用“过滤器”,如下所示:

Log.Logger = new LoggerConfiguration()
    .Filter.ByExcluding("SourceContext like '%System.Net.Http.HttpClient%' and @l = 'Information'")
    .CreateLogger();
© www.soinside.com 2019 - 2024. All rights reserved.