如何通过HTTP查询向Azure App Insights添加遥测键与错误日志
如何通过HTTP查询向Azure Application Insights添加包含错误消息与遥测键的日志?
嘿,我来帮你拆解两种实用的实现方式——一种是用.NET SDK快速整合到C#应用里(推荐,更易维护),另一种是直接发送HTTP请求的方式,你可以根据自己的场景灵活选择:
方式一:使用.NET SDK快速实现
如果你的应用基于.NET开发,用官方SDK是最省心的选择,它会自动处理遥测数据的格式、发送逻辑和异常重试。下面是包含自定义遥测键和错误日志的示例代码:
var keys = new Dictionary<string, object>() { { TelemetryKeysNames.Application, configuration.Value.Title }, { TelemetryKeysNames.User, context.HttpContext.User.Identity.Name } }; using (logger.BeginScope(keys)) { logger.Log(logLevel, ex, message, args); }
这段代码的逻辑很清晰:
- 先创建一个字典,存入你需要的自定义遥测键值对(比如应用名称、当前登录用户信息),这些会作为日志的上下文元数据
- 用
BeginScope把这些遥测键注入到当前日志上下文,这样后续的日志操作都会自动带上这些属性 - 最后调用
Log方法,传入日志级别、异常对象、消息文本和参数,就能把包含错误信息和自定义遥测的日志发送到App Insights了
方式二:直接发送HTTP请求
如果你的场景没法使用SDK,也可以直接通过HTTP POST请求把日志发送到App Insights的 ingestion 端点,具体步骤如下:
- 先从Azure门户的Application Insights资源中获取你的Instrumentation Key(遥测键)
- 构造符合App Insights数据规范的JSON请求体,包含错误消息、自定义遥测属性等内容
- 发送POST请求到对应的 ingestion 端点,示例如下:
POST https://dc.services.visualstudio.com/v2/track Content-Type: application/json Instrumentation-Key: YOUR_INSTRUMENTATION_KEY [ { "name": "Microsoft.ApplicationInsights.Message", "time": "2024-05-20T12:34:56.789Z", "iKey": "YOUR_INSTRUMENTATION_KEY", "tags": { "ai.application.ver": "1.0.0", "ai.user.id": "user123" }, "data": { "baseType": "MessageData", "baseData": { "ver": 2, "message": "这里填你的错误消息内容", "severityLevel": "Error", "properties": { "Application": "你的应用名称", "User": "当前用户ID/名称" } } } } ]
几个关键说明:
- 请求头里必须带上你的
Instrumentation-Key来完成身份验证 - 请求体是JSON数组,里面的对象定义了日志的类型、时间、全局标签元数据,以及具体的错误消息和自定义遥测属性
- 不同区域的App Insights可能有不同的ingestion端点,你可以在Azure门户的App Insights资源「端点」页面找到正确的URL
内容的提问来源于stack exchange,提问作者IgorRogachov
相关产品推荐
相关产品推荐

