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

Azure Functions中Application Insights范围日志无法正常工作求助

解决Azure Functions中Application Insights日志范围不生效的问题

1. 启用日志范围捕获

在host.json的applicationInsights配置节点中添加enableScopes: true,这是让Application Insights捕获日志范围的核心配置:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "Default": "Trace",
      "Microsoft.AspNetCore": "Warning"
    },
    "applicationInsights": {
      "logLevel": {
        "Default": "Information"
      },
      "enableScopes": true // 新增此配置项
    }
  },
  "extensions": {
    "serviceBus": {
      "prefetchCount": 32,
      "messageHandlerOptions": {
        "autoComplete": true,
        "maxConcurrentCalls": 32,
        "maxAutoRenewDuration": "00:30:00"
      }
    },
    "eventHub": {
      "maxBatchSize": 64,
      "prefetchCount": 256,
      "batchCheckpointFrequency": 1
    }
  }
}

2. 调整Program.cs的日志配置逻辑

避免硬编码InstrumentationKey,改用配置文件读取,并确保日志过滤规则不会拦截范围信息:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureLogging((context, loggingBuilder) =>
    {
        // 从配置文件读取Application Insights连接字符串
        var aiConnectionString = context.Configuration["ApplicationInsights:ConnectionString"];
        loggingBuilder.AddApplicationInsights(options => options.ConnectionString = aiConnectionString);
        
        // 移除默认的Application Insights过滤器,防止日志范围被过滤
        loggingBuilder.Services.Configure<LoggerFilterOptions>(options =>
        {
            var aiFilterRule = options.Rules.FirstOrDefault(rule => 
                rule.ProviderName == "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider");
            if (aiFilterRule != null)
            {
                options.Rules.Remove(aiFilterRule);
            }
        });
    })
    .Build();

host.Run();

3. 验证NuGet包依赖

根据你的Azure Functions运行模式安装对应包:

  • 隔离模式:安装Microsoft.Azure.Functions.Worker.ApplicationInsights和Microsoft.Extensions.Logging.ApplicationInsights
  • 进程内模式:安装Microsoft.ApplicationInsights.WorkerService

4. 查看日志范围的正确方式

在Application Insights中,范围值会被存入customDimensions字段,你可以用以下Kusto查询验证:

traces
| where message in ("Import check requested started", "Test Warning")
| project timestamp, message, customDimensions.Scope

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:00:18