如何在Azure Application Insights中创建带自定义列的专属日志,而非使用默认trace、requests?
Azure Application Insights 自定义日志需求解答
需求可行性说明
该需求在Azure Application Insights中完全可以实现,无需依赖默认的trace、requests遥测结构,具体实现路径如下:
- 上报自定义事件:你可以将
CreatedDate、TransactionId、LogDetails等全部自定义字段存入自定义事件的customDimensions属性中,通过App Insights SDK上报后,在日志查询界面编写Kusto语句将customDimensions下的字段展开为独立列,将该查询保存为函数后固定到App Insights左侧导航栏,即可得到你需要的OurCustomLog自定义标签页,所有自定义字段都支持直接筛选、聚合操作。 - 自定义遥测类型:如果你使用的是.NET SDK,可自行实现
ITelemetry接口定义完全匹配你需求字段的专属遥测类型,上报后存储结构更规整,无需额外解析customDimensions字段。 - 工作簿自定义视图:你也可以直接在App Insights工作簿中预制好包含所有自定义列的表格、以及对应字段的筛选器,将工作簿固定到导航栏后,使用体验和原生标签页完全一致。
可替代的适配Azure服务
如果你的使用场景不需要App Insights自带的性能监控、全链路追踪、可用性检测等APM能力,仅需结构化日志的存储、查询、筛选,可以选择更匹配需求的服务:
Azure Monitor 日志(Log Analytics):直接将自定义结构化日志上报到Log Analytics工作区的自定义表,表结构完全可以按照你需要的字段预先定义,无需处理App Insights默认的遥测体系,查询效率更高,适合纯自定义日志场景。Azure 数据资源管理器(ADX):如果你的日志量级大、需要长周期存储、复杂多维度分析,ADX的性能表现更优,支持秒级查询TB级结构化日志,自定义表结构自由度更高。Azure 表存储:如果你的查询需求比较简单、对成本敏感度高,也可以直接将结构化日志写入Azure表存储,按照TransactionId、StatusCode等字段设计行键/分区键,查询速度快、存储成本极低。
内容的提问来源于stack exchange,提问作者user2860691
相关产品推荐
相关产品推荐

