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

.NET 8 Azure Function无法向App Insights写入Info/Debug日志求助

.NET 8 Azure Function App Insights非错误日志缺失排查

针对你遇到的.NET 8 Azure Function仅Error日志能进入App Insights的问题,结合.NET 8与.NET 6的运行模型差异,排查方向如下:

1. 适配隔离进程模型的日志配置

.NET 8 Azure Functions默认采用隔离进程模型,而你之前的.NET 6应用大概率是in-process模型,两者日志管道逻辑不同。隔离进程下,需在host.json的applicationInsights节点显式指定日志级别,而非仅依赖根节点的logLevel:

{
  "logging": {
    "logLevel": {
      "default": "Debug"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      },
      // 新增此配置,确保App Insights接收全级别日志
      "logLevel": {
        "default": "Debug"
      }
    }
  }
}

2. 显式声明Function命名空间日志级别

.NET 8对Functions日志的命名空间过滤逻辑做了调整,默认不会自动继承根节点的default级别,需在logLevel中明确指定:

"logLevel": {
  "default": "Debug",
  "Function": "Debug",
  "Microsoft": "Warning"
}

3. 确认App Insights SDK包版本适配

隔离进程模型需使用专属SDK包,若沿用.NET 6的in-process包会导致日志路由失效。检查项目包引用,确保安装:

  • Microsoft.Azure.Functions.Worker.ApplicationInsights(版本≥1.1.0,适配.NET 8)
  • 移除旧的Microsoft.ApplicationInsights.AspNetCore(仅适用于in-process模型)

4. 排查采样规则的隐式过滤

虽然你排除了Request类型,但.NET 8的采样逻辑可能对非Error日志设置了极低的默认采样率。可临时将采样率设为100%验证:

"samplingSettings": {
  "isEnabled": true,
  "excludedTypes": "Request",
  "fixedRate": 1.0
}

若调整后能看到完整日志,说明是采样规则导致,可根据业务需求调整采样策略。

5. 检查Program.cs中的日志配置

隔离进程的Program.cs中,需确保未错误设置日志最低级别:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureLogging(logging =>
    {
        logging.AddApplicationInsights();
        logging.AddApplicationInsightsWebJobs();
        // 确认此处设置为Debug,而非Error
        logging.SetMinimumLevel(LogLevel.Debug);
    })
    .Build();

host.Run();

内容的提问来源于stack exchange,提问作者5NRF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:10:18