默认 ActivityIdFormat 为 W3C

活动 (Activity.DefaultIdFormat) 的默认标识符格式现在是 ActivityIdFormat.W3C

更改描述

W3C 活动 ID 格式是在 .NET Core 3.0 中引入的,这是分层 ID 格式的替代方法。 但是,为了保持兼容性,W3C 格式在 .NET 5 之前未设为默认值。 默认值在 .NET 5 中发生了更改,因为 W3C 格式已得到批准 ,并获得了跨多种语言实现的牵引力。

如果应用面向 .NET 5 或更高版本以外的平台,它将体验旧行为,即 Hierarchical 默认格式。 此默认值适用于平台 net45+、netstandard1.1+和 netcoreapp(1.x、2.x 和 3.x)。 在 .NET 5 及更高版本中, Activity.DefaultIdFormat 设置为 ActivityIdFormat.W3C.

已引入的版本

5.0

如果您的应用程序无需考虑用于分布式跟踪的标识符,则无需执行任何操作。 像 ASP.NET Core 和 HttpClient 这样的库可以使用或传播 ActivityIdFormat 的两个版本。

如果需要与现有系统实现互操作性,或者当前系统依赖于标识符的格式,可以通过将DefaultIdFormat设置为ActivityIdFormat.Hierarchical来保留旧行为。 或者,可以通过以下三种方式之一设置 AppContext 开关:

  • 在项目文件中。

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Diagnostics.DefaultActivityIdFormatIsHierarchial" Value="true" />
    </ItemGroup>
    
  • runtimeconfig.json 文件中。

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Diagnostics.DefaultActivityIdFormatIsHierarchial": true
            }
        }
    }
    
  • 通过环境变量。

    DOTNET_SYSTEM_DIAGNOSTICS_DEFAULTACTIVITYIDFORMATISHIERARCHIAL设置为true或 1。

受影响的 API