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

.NET 8隔离进程Azure Functions自定义日志无法在Application Insights中显示

.NET 8隔离进程Azure Functions自定义日志无法在Application Insights中显示

我之前在做.NET 8隔离模式的Azure Function时,也碰到过一模一样的问题——本地调试终端里日志打印得好好的,但Azure门户的Application Insights就是捞不到记录,折腾了好一阵才搞定。结合你的描述和代码,给你几个实用的排查方向,应该能解决:


1. 先确认NuGet包是否装对了

隔离模式的Function和传统的in-process模式不一样,需要专门的Application Insights支持包。你得确保项目里已经安装了Microsoft.Azure.Functions.Worker.ApplicationInsights,如果没装,直接用NuGet包管理器或者命令行安装:

Install-Package Microsoft.Azure.Functions.Worker.ApplicationInsights

另外也顺手把Microsoft.Azure.Functions.Worker和Microsoft.Azure.Functions.Worker.Sdk更到最新版本,避免版本不兼容的问题。

2. 检查Program.cs的服务配置有没有遗漏

隔离模式下必须手动把Application Insights的遥测服务加进去,不然日志根本不会往AI那边发。你的Program.cs里应该要有这两行关键配置:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices(services =>
    {
        // 添加AI遥测服务
        services.AddApplicationInsightsTelemetryWorkerService();
        // 配置Function专属的AI设置
        services.ConfigureFunctionsApplicationInsights();
    })
    .Build();

host.Run();

要是缺了这俩,就算配置了密钥也白搭。

3. 修正host.json的日志配置细节

你说已经调整过host.json,但可能配置的姿势不对。针对隔离模式,正确的日志配置得明确给Application Insights设置日志级别,尤其是你用到了LogTrace,默认Trace级别的日志是不会被AI捕获的。给你个参考配置:

{
    "version": "2.0",
    "logging": {
        "applicationInsights": {
            "samplingSettings": {
                "isEnabled": true,
                "excludedTypes": "Request"
            },
            // 给你的函数类单独设置Trace级别
            "logLevel": {
                "Company.Function.TestFunctionPOC": "Trace"
            }
        },
        "logLevel": {
            "Default": "Information",
            "Microsoft": "Warning",
            "Microsoft.Hosting.Lifetime": "Information"
        }
    }
}

如果测试的时候还是看不到,暂时可以把samplingSettings.isEnabled设为false(生产环境再开采样),避免采样过滤掉日志。

4. 再核对local.settings.json的配置

除了APPINSIGHTS_INSTRUMENTATIONKEY,一定要确保FUNCTIONS_WORKER_RUNTIME是dotnet-isolated,不然函数会默认用in-process模式运行,所有隔离模式的配置都不生效:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "APPINSIGHTS_INSTRUMENTATIONKEY": "你的仪表密钥"
    }
}

5. 本地调试的小细节

本地调试时,AI的日志有时候会有几分钟的延迟,别刚跑就去查,等个3-5分钟再去门户看,或者用AI的「实时指标」面板,能更快看到日志是否进来。另外也要注意,本地的代理或者防火墙会不会阻止了日志的发送,暂时关掉试试。


你的函数代码本身是没问题的,再贴出来方便你核对:

using Microsoft.ApplicationInsights.Channel;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace Company.Function
public class TestFunctionPOC
{
   private readonly ILogger<TestFunctionPOC> _logger;
   public TestFunctionPOC(ILogger<TestFunctionPOC> logger)
    {
        _logger = logger;
    }
  [Function("TestFunctionPOC")]
  public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest req)
  {
     _logger.LogInformation("C# HTTP trigger function processed a request.");
     _logger.LogWarning("## this is a sample warning ##");
     _logger.LogTrace("## This is a sample Trace #$#");

     return new OkObjectResult("Welcome to Azure Functions!");
   }
  }
}

你提供的本地调试日志截图:
本地调试终端显示的日志

备注:内容来源于stack exchange,提问作者tecs-x

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:40:29