ASP.NET Core 3.1 HttpClient 只记录警告和错误

AnK*_*ing 11 asp.net-core asp.net-core-3.1

我注意到应该在后台运行的应用程序(服务)由于 HttpClient 创建了垃圾日志信息日志,如下所示:

info: System.Net.Http.HttpClient.Default.LogicalHandler[100] 开始处理 HTTP 请求 POST https://localhost:44317/programmatic/getcontent info: System.Net.Http.HttpClient.Default.ClientHandler[100] Sending HTTP请求 POST https://localhost:44317/programmatic/getcontent信息:System.Net.Http.HttpClient.Default.ClientHandler[101] 3027.6345ms 后收到 HTTP 响应 - OK 信息:System.Net.Http.HttpClient.Default.LogicalHandler [101] 3028.2987ms 后结束处理 HTTP 请求 - OK 信息:System.Net.Http.HttpClient.Default.ClientHandler[101] 3052.4709ms 后收到 HTTP 响应 - OK 信息:System.Net.Http.HttpClient.Default.LogicalHandler[ 101] 在 3053.467 毫秒后结束处理 HTTP 请求 - OK

有没有办法在任何地方配置它?

我像这样注入客户端工厂:

serviceCollection.AddHttpClient();
Run Code Online (Sandbox Code Playgroud)

然后像这样创建一个客户端:

HttpClient client = _clientFactory.CreateClient();
Run Code Online (Sandbox Code Playgroud)

Mih*_*myh 12

您可以appsettings.json通过向 Logging 对象添加新行来覆盖日志级别:

  "Logging": {
    "LogLevel": {
      "System.Net.Http.HttpClient": "Warning"
    }
  },
Run Code Online (Sandbox Code Playgroud)

这将记录Warning级别及以上级别的任何内容。

  • 我在主 appsettings 和 appsettings.development 中尝试了这个......它仍然向我显示控制台 o_0 中的输出。还有其他什么可能会覆盖这些吗? (10认同)

小智 8

您可以通过 Appsettings 文件在 .NET Core 中配置登录。你应该在appsettings.json文件中找到一个部分

{
  "Logging": {
    "Debug": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以添加额外的日志级别过滤器来指定记录所需的最低日志级别。

{
  "Logging": {
    "Debug": {
      "LogLevel": {
        "Default": "Information",
        "System.Net.Http.HttpClient": "Debug"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在 .NET Core 中使用过滤器记录日志的文档可以在这里找到。

可以在此处找到 IHttpClientFactory 库中使用过滤器进行日志记录的文档。本文档还包括使用命名 HttpClient 进行日志过滤的示例。

  • 我已将所有日志记录级别设置为警告,但我仍然在控制台中获取信息。我在这里错过了什么吗? (7认同)
  • 我弄清楚了问题所在,当我创建一个执行所有 HttpClient 请求的新 Quarz 作业时,我重新定义了默认记录器。感谢你的回答! (3认同)