Azure容器应用服务中.NET6 Worker Service的TelemetryClient.TrackEvent()日志位置
.NET6 Worker Service容器应用TrackEvent日志排查及查看方法
一、先排查显式日志未上报的核心问题
你看不到TrackEvent日志,大概率是上报环节出了问题,先确认这几点:
- 连接字符串配置:检查
appsettings.json或者Azure应用服务的「配置」-「应用程序设置」里,APPLICATIONINSIGHTS_CONNECTION_STRING是否正确指向你的Application Insights资源。注意Worker Service必须用连接字符串,老的instrumentation key已不推荐使用。 - TelemetryClient的使用方式:必须通过依赖注入获取实例,不能自己
new TelemetryClient(),否则会丢失上下文配置。比如在Worker类的构造函数里注入:private readonly TelemetryClient _telemetryClient; public Worker(TelemetryClient telemetryClient) { _telemetryClient = telemetryClient; } - 采样率限制:默认Application Insights会对高流量场景做采样,可能丢弃了你的自定义事件。可以在
appsettings.json里强制关闭采样:"ApplicationInsights": { "Sampling": { "Enabled": false, "Percentage": 100 } } - 容器运行状态:先在Azure应用服务的「日志流」-「容器日志」里查看,确认应用没有崩溃、没有配置错误导致
TrackEvent代码根本没执行。
二、显式TrackEvent日志的存储位置
当配置正确、日志成功上报后,TrackEvent的自定义事件会存储在你绑定的Application Insights资源托管的后端存储中,这是Azure Monitor托管的存储,不需要手动指定存储账户。
三、正确的查看方式
- Application Insights日志查询:打开对应的Application Insights资源,进入「日志」(Log Analytics)页面,用Kusto语句精准查询:
customEvents | where name == "你的自定义事件名称" | order by timestamp desc - 可视化事件页面:在Application Insights左侧菜单的「使用情况」-「事件」里,直接筛选事件名称、时间范围,就能看到所有上报的自定义事件详情。
- 临时排查用日志流:如果开启了应用的调试日志,也能在应用服务的「日志流」里看到AI上报的调试信息,但正式的事件数据还是要到Application Insights里查看。
内容的提问来源于stack exchange,提问作者mfcallahan
相关产品推荐
相关产品推荐

