导致非开发环境中 Azure App Insights 跟踪日志丢失的原因是什么?

问题描述 投票:0回答:1

我已在当前正在生产的 .NET 6 项目上配置了 App Insights,代码如下所述。但是,在应用服务托管的开发环境中,我可以看到队列工作线程(服务)的跟踪日志的完整列表,并且对于生产中的相同服务,仅出现错误(严重性 3)跟踪。

什么可能导致这种症状?是否有一些隐式环境处理代码来防止在非开发环境中出现痕迹?

如下所示,我确实有一个 QueueTelemetryFilter 类,用于过滤特定时间段内不成功的遥测数据,但这 a) 会影响遥测数据,并且 b) 如果是原因,则在所有环境中都将保持一致。

配置:

程序.cs


// Add services to the container.
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddApplicationInsightsTelemetryProcessor<QueueTelemetryFilter>();

appsettings.Development.json / appsettings.Production.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ApplicationInsights": {
    "ConnectionString": "[REDACTED]"
  }
}

用途:

public class SomeQueueProcessor: ISomeQueueProcessor
{
    private readonly ILogger<SomeQueueProcessor> logger;

    public SomeQueueProcessor(
        ILogger<SomeQueueProcessor> logger)
    {
        this.logger = logger;
    }

    public async Task HandleQueue(SomeMessage message, CancellationToken cancellationToken)
    {
        logger.LogInformation("Begin SomeTask", message.Metadata);

        // some code 

        try {
            // some more code
        catch(SomeException se){
            logger.LogError("SomeTask Failed", se.ExceptionMetadata);
        }

        logger.LogInformation("End SomeTask", message.Metadata);
    }
}

.net azure azure-application-insights appinsights
1个回答
0
投票

事实证明 - 我们的环境配置不正确,它在 Serilog 中注册了重复的 App Insights 记录器。

此后,我们删除了 Serilog 中 App Insights 的任何日志记录,并直接与 App Insights 集成。

感谢大家对我的指导!

© www.soinside.com 2019 - 2024. All rights reserved.