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

ASP.NET Core 3.1 HttpClient to log only warnings and errors

我注意到我的应用程序(服务)本应 运行 在背景中创建垃圾记录信息的日志,因为 HttpClient,如下所示:

info: System.Net.Http.HttpClient.Default.LogicalHandler[100] Start processing HTTP request POST https://localhost:44317/programmatic/getcontent info: System.Net.Http.HttpClient.Default.ClientHandler[100] Sending HTTP request POST https://localhost:44317/programmatic/getcontent info: System.Net.Http.HttpClient.Default.ClientHandler[101] Received HTTP response after 3027.6345ms - OK info: System.Net.Http.HttpClient.Default.LogicalHandler[101] End processing HTTP request after 3028.2987ms - OK info: System.Net.Http.HttpClient.Default.ClientHandler[101] Received HTTP response after 3052.4709ms - OK info: System.Net.Http.HttpClient.Default.LogicalHandler[101] End processing HTTP request after 3053.467ms - OK

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

我这样注入客户端工厂:

serviceCollection.AddHttpClient();

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

HttpClient client = _clientFactory.CreateClient();

您可以覆盖 appsettings.json 中的日志级别,例如,向 Logging 对象添加一个新行:

  "Logging": {
    "LogLevel": {
      "System.Net.Http.HttpClient": "Warning"
    }
  },

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

您可以通过 Appsettings 文件在 .NET Core 中配置登录。您应该在 appsettings.json 文件中的行

中找到一个部分
{
  "Logging": {
    "Debug": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}

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

{
  "Logging": {
    "Debug": {
      "LogLevel": {
        "Default": "Information",
        "System.Net.Http.HttpClient": "Debug"
      }
    }
  }
}

可以找到有关在 .NET Core 中使用过滤器进行日志记录的文档here

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