如何为 HttpClient 调用配置网络跟踪 Dotnet 核心?

Par*_*dar 9 c# system.diagnostics dotnet-httpclient .net-core .net-standard

根据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>  
      --------------
----------------------
Run Code Online (Sandbox Code Playgroud)

Kal*_*son 6

.NET(Core)使用EventSource来记录这些事件。在 Windows 上,事件源使用Windows 事件跟踪 (ETW),因此与其配合使用的所有工具都可用于记录和读取跟踪输出。在 Linux 上,LTTTNG用于记录事件。

Microsoft 的运行时存储库包含有关如何使用PerfViewlogman调试网络跟踪的 Windows 文档。还有关于在 Linux 上捕获跟踪的有用文档。

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

您没有直接提到 ASP.NET Core,所以我假设您的问题不是特定于它的,但请注意,正如 Alexandre 指出的那样,跟踪可以配置,并且可以提供您需要的部分或全部内容。


小智 -3

文档中解释了一切:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests ?view=aspnetcore-2.2#logging-1 。

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

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

  • 您好,感谢您的参考,但这些日志更多的是请求日志,而可用于 dotnet 框架的网络跟踪是非常详细的跟踪,包括应用程序、TCP 等层,其中包含握手、证书、TLS 和所有其他内容。 (2认同)