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

.NET 6 ServiceBusTrigger函数在App Insights添加自定义日志属性失败求助

解决Azure Function中ILogger添加自定义属性到Application Insights的问题

核心配置前提

默认情况下,Azure Function的ILogger与Application Insights集成时,不会自动捕获Scope属性或展开结构化日志对象,需先通过host.json开启相关功能:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      },
      // 开启Scope属性捕获
      "enableScopes": true,
      // 开启结构化日志的属性提取
      "enableStructuredLogging": true
    },
    "logLevel": {
      "default": "Information"
    }
  }
}

1. 正确使用BeginScope捕获全局属性

之前的BeginScope写法本身没问题,但需确保enableScopes配置已开启。推荐用强类型集合或匿名类型,确保属性能被AI解析:

// 方式1:Dictionary集合
using (_logger.BeginScope(new Dictionary<string, object>
{
    ["CustomerId"] = 12345,
    ["OrderNumber"] = "ORD-202405"
}))
{
    _logger.LogInformation("开始处理客户订单");
}

// 方式2:匿名类型
using (_logger.BeginScope(new { CustomerId = 12345, TransactionType = "Refund" }))
{
    _logger.LogInformation("发起退款请求");
}

开启配置后,这些属性会作为AI日志的自定义维度显示。

2. 结构化日志的正确写法(单条日志属性)

直接传递匿名对象时,不要用{properties}这类模糊占位符,需用与对象属性名匹配的命名占位符,让框架自动提取属性:

var customProps = new
{
    OrderNumber = "ORD-202405",
    TransactionType = "Purchase"
};

// 错误写法:无法展开对象属性
// _logger.LogInformation("xyz {properties}", customProps);

// 正确写法1:逐个声明占位符
_logger.LogInformation("处理交易,订单号:{OrderNumber},类型:{TransactionType}", 
    customProps.OrderNumber, customProps.TransactionType);

// 正确写法2:直接匹配对象属性(.NET 6+支持)
_logger.LogInformation("完成交易 {OrderNumber} {TransactionType}", customProps);

以上写法会让AI自动将OrderNumber、TransactionType提取为自定义维度。

3. 解决Activity.Current为空的问题

ServiceBusTrigger默认不会初始化Activity,需在host.json中启用分布式追踪:

{
  "extensions": {
    "serviceBus": {
      "enableDistributedTracing": true
    }
  }
}

启用后Activity.Current会被初始化,此时可添加Baggage:

Activity.Current?.AddBaggage("CustomerId", "12345");
_logger.LogInformation("处理客户请求");

添加的Baggage会作为AI追踪链路的属性被捕获。

4. 确认Azure端配置

确保Function App已在Azure门户关联Application Insights实例,且环境变量APPLICATIONINSIGHTS_CONNECTION_STRING(或旧版APPINSIGHTS_INSTRUMENTATIONKEY)已正确配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:53:31