You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中如何实现System.Net与System.Net.Sockets的跟踪?

.NET Core中如何跟踪System.Net和System.Net.Sockets命名空间

问题描述

在.NET Framework中,我们可通过配置文件跟踪System.Net和System.Net.Sockets命名空间,但在.NET Core中尝试相同方式却未成功。原.NET Framework的配置代码如下:

<system.diagnostics>
  <trace autoflush="true"/>
  <sources>
    <source name="System.Net" maxdatasize="1024">
      <listeners>
        <add name="TraceFile"/>
      </listeners>
    </source>
    <source name="System.Net.Sockets" maxdatasize="1024">
      <listeners>
        <add name="TraceFile"/>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener"
      initializeData="trace.log"/>
  </sharedListeners>
  <switches>
    <add name="System.Net" value="Verbose" />
    <add name="System.Net.Sockets" value="Verbose" />
  </switches>
</system.diagnostics>

.NET Core中的实现方式

方法1:通过appsettings.json配置

.NET Core不再沿用system.diagnostics的XML配置模式,而是基于Microsoft.Extensions.Logging体系实现日志跟踪。在appsettings.json中添加如下配置,指定目标命名空间的日志级别:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "System.Net": "Debug",
      "System.Net.Sockets": "Debug"
    },
    "Console": {
      "IncludeScopes": true
    },
    "File": {
      "Path": "trace.log",
      "LogLevel": {
        "System.Net": "Debug",
        "System.Net.Sockets": "Debug"
      }
    }
  }
}

注意:若需将日志输出到文件,需先通过NuGet安装对应日志提供程序(如Serilog.Sinks.File或Microsoft.Extensions.Logging.File),再完成上述配置。

方法2:通过代码直接配置

如果偏好代码配置而非配置文件,可在应用启动时直接设置日志规则:

using Microsoft.Extensions.Logging;

var builder = WebApplication.CreateBuilder(args);

// 配置日志:设置目标命名空间的日志级别,同时添加控制台和文件输出
builder.Logging.AddFilter("System.Net", LogLevel.Debug)
               .AddFilter("System.Net.Sockets", LogLevel.Debug)
               .AddConsole()
               .AddFile("trace.log"); // 需对应日志包支持

var app = builder.Build();

// 应用业务代码...

app.Run();

额外说明

  • .NET Core日志体系与.NET Framework的System.Diagnostics.Trace机制完全不同,需切换到新的日志模型。
  • 日志级别映射:原.NET Framework的Verbose对应.NET Core的Debug或Trace级别(Trace粒度更细)。
  • 若需捕获底层网络调用细节,可使用.NET Core自带的dotnet trace命令行工具:
dotnet trace collect --providers System.Net.Http,System.Net.Sockets --output trace.nettrace

生成的.nettrace文件可通过Visual Studio或dotnet trace analyze命令查看完整的网络调用链路信息。

内容的提问来源于stack exchange,提问作者user3017827

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:03:30