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

禁用Azure Functions App不必要的日志收集(仅保留AppExceptions)

针对Azure Functions v3禁用非AppExceptions日志的解决方案

方法一:通过host.json配置(推荐,无需修改代码)

修改函数应用的host.json文件,通过配置日志级别和App Insights遥测过滤来实现需求:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request;Metric"
      },
      // 可选:关闭不需要的额外遥测收集
      "enableDependencyTracking": false,
      "enablePerformanceCountersCollection": false
    },
    "logLevel": {
      // 仅保留函数相关的错误日志,关闭系统/框架类日志
      "Function": "Error",
      "Microsoft": "None",
      "System": "None"
    },
    // 可选:如果日志写入Azure存储文件系统,限制仅保留错误级日志
    "fileLoggingMode": "debugOnly"
  }
}

配置说明:

  • excludedTypes: "Request;Metric":直接排除AppRequests(请求遥测)和AppMetrics(指标遥测),仅保留AppExceptions(异常遥测)及未被排除的必要遥测。
  • logLevel:设置仅收集函数相关的错误级别日志,关闭Microsoft和System命名空间的所有日志,减少写入存储的冗余日志量。
  • fileLoggingMode:若日志存储在Azure存储账户的文件系统中,设置为debugOnly可仅保留调试级以上的错误日志,进一步降低存储占用。

方法二:通过代码自定义遥测处理器(适合复杂过滤场景)

如果需要更精细的控制,可添加自定义遥测处理器,仅保留异常遥测:

  1. 创建遥测处理器类:
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

public class ExceptionOnlyTelemetryProcessor : ITelemetryProcessor
{
    private readonly ITelemetryProcessor _nextProcessor;

    public ExceptionOnlyTelemetryProcessor(ITelemetryProcessor nextProcessor)
    {
        _nextProcessor = nextProcessor;
    }

    public void Process(ITelemetry telemetry)
    {
        // 仅处理异常类型的遥测
        if (telemetry is ExceptionTelemetry)
        {
            _nextProcessor.Process(telemetry);
        }
        // 其他类型遥测直接丢弃
    }
}
  1. 在Startup.cs中注册处理器(仅适用于In-Process模型的C#函数):
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(YourFunctionAppNamespace.Startup))]
namespace YourFunctionAppNamespace
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddApplicationInsightsTelemetryProcessor<ExceptionOnlyTelemetryProcessor>();
        }
    }
}

验证配置

修改配置后重新部署函数应用,运行之前的Kusto查询,确认AppRequests和AppMetrics不再被收集,AppExceptions可正常捕获。

内容的提问来源于stack exchange,提问作者Yusuf Demir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:30:50