如何将全局元数据添加到 ASP.NET 核心日志记录?

How to add global metadata to ASP.NET Core logging?

我想将我的应用程序的内部版本号添加到使用 Application Insights 进行日志存储的 ASP.NET Core 3.1 应用程序的所有日志中。不必到处使用 BeginScopeEndScope 是否可行?我假设它是 ConfigureLogging 启动挂钩的一部分,但没有看到任何东西。我过去用 Serilog 的 enrichers 做过这个,但我目前没有使用那个库。

您可以使用 TelemetryInitializer 实现。 (https://docs.microsoft.com/en-us/azure/azure-monitor/app/api-filtering-sampling#addmodify-properties-itelemetryinitializer)

public class BuildNumberTelemetryInitializer : ITelemetryInitializer
  {
    public void Initialize(ITelemetry telemetry)
    {
        (telemetry as ISupportProperties).Properties.Add("BuildNumber", "ValueForBuildNumber"); 
    }

您需要将此初始化程序添加到配置中,如果您使用的是 Asp.Net 核心应用程序,则按如下方式完成。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, BuildNumberTelemetryInitializer >();
}