【问题标题】:How to Configure Network Tracing Dotnet core for HttpClient calls?如何为 HttpClient 调用配置网络跟踪 Dotnet 核心?
【发布时间】:2019-08-23 22:49:56
【问题描述】:

根据https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-configure-network-tracing的参考文档

我们可以在 web.config 或任何其他配置文件中进行设置,我们可以获得详细的 system.net 跟踪、HttpClient 调用的数据包跟踪以及HttpClient 调用中的任何类型的问题都可以在跟踪中捕获,无论是证书、TLS 或其他任何东西。

但是,对于 dotnet 核心/标准,我们是否有类似的实现,可以在 Web 应用程序或控制台应用程序/库中使用?

dotnet 框架的配置:

<configuration>  
  <system.diagnostics>  
    <sources>  
      <source name="System.Net" tracemode="includehex" maxdatasize="1024">  
        <listeners>  
          <add name="System.Net"/>  
        </listeners>  
      </source>  
      --------------
----------------------

【问题讨论】:

标签: c# .net-core dotnet-httpclient .net-standard system.diagnostics


【解决方案1】:

.NET Core 使用EventSource 记录这些事件。在 Windows 上,事件源使用Event Tracing for Windows (ETW),因此所有使用它的工具都可以用来记录和读取跟踪输出。在 Linux 上,LTTNG 用于记录事件。

Microsoft 的 CoreFX 存储库 contains documentation for Windows 关于如何使用 PerfViewlogman 调试网络跟踪。他们的 CoreCLR 存储库包含 documentation on capturing traces on Linux,这也很有用。

Microsoft 正在努力以某种方式统一跨平台的体验。目前,这种支持似乎是通过dotnet-trace command 进行的。

您没有直接提及 ASP.NET Core,所以我假设您的问题并非针对它,但请注意,正如 Alexandre 指出的那样,tracing can be configured 可能会提供您需要的部分或全部内容。

【讨论】:

    【解决方案2】:

    文档中解释了所有内容:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.2#logging-1

    总而言之,您需要在 appsettings.json 中设置“Trace”日志级别,您应该会看到日志(如果您像这样注册 HttpClient:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.2#basic-usage):

    "Logging": {
        "LogLevel": {
            "Default": "Trace"
        }
    }
    

    【讨论】:

    • 您好,感谢您的参考,但这些日志更多的是请求日志,而 dotnet 框架可用的网络跟踪是非常详细的跟踪,包括应用程序、TCP 等层,包括握手、证书、TLS和所有其他的东西。
    • 嗯,我不知道 .NET Core 是否真的可行我没有找到任何参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多