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

如何将Azure Function自定义属性以JSON格式写入Log Analytics?

解决方案

1. 关联App Insights与Log Analytics工作区

只有当你的App Insights实例为基于工作区的类型,或已手动链接到Log Analytics工作区时,App Insights中的Traces表数据才会同步到Log Analytics中。若使用的是经典App Insights实例,建议升级为基于工作区的类型,这样TrackTrace生成的日志会自动出现在Log Analytics的Traces表内。

2. 让_logger输出带自定义属性的结构化日志

不要用字符串拼接方式记录日志,改用结构化语法传递自定义属性,这样属性会自动归入customDimensions字段:

// 方式1:通过匿名对象传递自定义属性
_logger.LogInformation("用户操作日志", new { prop1 = "value1", prop2 = "value2" });

// 方式2:通过字典传递自定义属性
var customProps = new Dictionary<string, object>
{
    {"prop1", "value1"},
    {"prop2", "value2"}
};
_logger.LogInformation("用户操作日志", customProps);

这类日志在App Insights的Traces表中会保留结构化属性,同步到Log Analytics后,可直接用customDimensions.prop1或customDimensions['prop1']查询。

3. 调整host.json配置优化日志行为

修改配置避免Trace日志被采样过滤,同时确保日志输出格式符合结构化要求:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request,Trace",
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 500
      }
    },
    "logLevel": {
      "FunctionApps": "Information",
      "Microsoft": "Warning"
    },
    "console": {
      "isEnabled": true,
      "formatterName": "json"
    }
  }
}
  • samplingExcludedTypes添加Trace:防止TrackTrace和结构化日志被采样过滤
  • console.formatterName设为json:让日志以JSON格式输出,Log Analytics采集时能保留结构(推荐优先用Traces表统一查询)

4. 验证日志查询

配置完成后等待10-15分钟让数据同步,在Log Analytics中:

  • 查询Traces表:可看到TrackTrace和_logger结构化日志的所有记录,通过customDimensions字段筛选自定义属性
  • 若使用FunctionAppLogs表:结构化日志的JSON会解析到Properties字段,可通过Properties.prop1查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:45:35