Application Insights不记录自定义事件

我在C#Controller中的ASP.NET核心应用程序中设置了Application Insights,它正在记录基本数据,如页面视图,响应时间等。但我想创建一些自定义事件并记录这些事件,但我无法获得任何他的自定义事件将显示在Azure门户中。 目前我正在使用Application Insights的免费版本。

非常直截了当

var appInsights = new TelemetryClient(); appInsights.TrackEvent(eventName, properties); 

eventName是一个字符串,包含我想要跟踪的自定义事件,属性是一个字典来跟踪一些其他属性。

在我运行应用程序并点击这些行几次后,我可以转到azure门户网站查看基本信息,但是当我进行搜索时,它说有0个自定义事件并通过以下方式搜索任何自定义事件name不返回任何结果。

我有一个类,下面有遥测的东西

 public class ApplicationInsightsTracker : IApplicationTracker { private readonly TelemetryClient AppInsights = new TelemetryClient(); public void TrackEvent(string eventName, string userName, Dictionary properties = null) { AppInsights.Context.User.AccountId = userName; TrackEvent(eventName, properties); } public void TrackRequest(string eventName, string userName, TimeSpan elapsed, Dictionary properties = null) { AppInsights.Context.User.AccountId = userName; TrackEvent(eventName, properties); AppInsights.TrackRequest(eventName, DateTimeOffset.Now, elapsed, "200", true); AppInsights.Flush(); } private void TrackEvent(string eventName, IDictionary properties = null) { AppInsights.TrackEvent(eventName, properties); AppInsights.Flush(); } } 

然后我用它的一个简单例子是

  Tracker.TrackEvent("Visit HomePage", User.Identity.Name); 

编辑:上面的事件正在运行,但下面的事件不是,它根本没有记录这个。 这会调用TrackRequest以及TelementryClient上的TrackEvent,但我根本没有看到这些。

  Tracker?.TrackRequest("Drill Report", userName, stopwatch.Elapsed, new Dictionary { { "DrillBy", report.DrillBy == null ? "None" : report.DrillBy.FriendlyName } }); 

我有点拿回来。 我看到其中一些事件发生了,但是我把它们背靠背记录了一下,我只看到6个我应该看到的中的2个? 有什么想法可能会发生什么?

Application Insights遥测客户端具有内存缓冲区和刷新间隔(默认为1分钟,据我记得),用于将缓冲遥测发送到AI端点。
您的Track方法有一个遥测客户端的本地成员,它在实际将数据刷新到AI端点之前进行“垃圾收集”。 因此,您有三个选项(首先推荐):

  1. 将遥测客户端存储为类的成员,这将在每个Track执行时保留初始化,更重要的是 – 将使客户端保持活动状态以使刷新间隔启动(只要您不每次都重新生成ApplicationInsightsTracker) 。
  2. 通过调用Flush API(appInsights.Flush())调用TrackEvent / TrackRequest / TrackX后刷新内存缓冲区。
  3. 出于开发目的 – 您还可以启用开发人员模式以自动刷新每个跟踪的遥测数据库上的缓冲区。

我怀疑在构造TelemetryClient()对象时未初始化某些基本配置。 它可能很容易像遥测客户端对象中的“无检测键”,或者从TelemetryConfiguration()对象读取的更隐藏的内容。

您可能希望检查传出的HTTP流量以查看对dc.services.visualstudio.com的失败请求 – 错误可能会提供有关修复/初始化内容的线索。

此外,您可以查看专门针对Asp.Net核心项目的入门 – 它可能包含您正在寻找的缺失部分。

AI WEB SDK和AI ASP.NET核心SDK的代码在GitHub上 ,因此您可以快速浏览代码,看看还有什么可以在这里进行侧钻。