我已在我的ASP.NET Core应用程序的C#控制器中设置了应用程序洞察功能,它正在记录基本数据,如页面浏览量、响应时间等。但我也想创建一些自定义事件并将其记录下来,但我无法在Azure门户中看到任何自定义事件。目前我正在使用免费版本的应用程序洞察功能。
这非常简单明了。
var appInsights = new TelemetryClient();
appInsights.TrackEvent(eventName, properties);
eventName是一个包含我想要跟踪的自定义事件的字符串,properties是一个字典,用于跟踪一些附加属性。
当我运行应用程序并多次点击这些代码行后,我可以转到Azure门户,在那里看到基本信息,但当我进行搜索时,它会显示0个自定义事件,并且按名称搜索任何自定义事件都没有结果。
我有一个类,其中包含下面的遥测内容。
public class ApplicationInsightsTracker : IApplicationTracker
{
private readonly TelemetryClient AppInsights = new TelemetryClient();
public void TrackEvent(string eventName, string userName, Dictionary<string, string> properties = null)
{
AppInsights.Context.User.AccountId = userName;
TrackEvent(eventName, properties);
}
public void TrackRequest(string eventName, string userName, TimeSpan elapsed,
Dictionary<string, string> 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<string, string> properties = null)
{
AppInsights.TrackEvent(eventName, properties);
AppInsights.Flush();
}
}
那么我使用它的一个简单例子是
Tracker.TrackEvent("Visit HomePage", User.Identity.Name);
编辑:上述事件可以工作,但下面的事件不能工作,根本没有记录。它调用TelementryClient的TrackRequest和TrackEvent,但我根本看不到这些信息。 Tracker?.TrackRequest("Drill Report", userName, stopwatch.Elapsed,
new Dictionary<string, string>
{
{ "DrillBy", report.DrillBy == null ? "None" : report.DrillBy.FriendlyName }
});
我有点收回之前的话。我看到了一些这样的事件,但是我连续记录了一堆事件,但我只看到了其中的2个而不是应该看到的6个?有什么想法吗?