默认 ActivityIdFormat 为 W3C

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

更改描述

.NET Core 3.0 中引入了 W3C 活动 ID 格式,作为分层 ID 格式的替代格式。 但是,为了保持兼容性,直到 .NET 5 才将 W3C 格式设置为默认格式。 .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