Pau*_*cas 6 c# asp.net azure azure-application-insights
我有在C#控制器我的ASP.NET核心应用设置应用程序见解,它是记录基本数据,如网页浏览,响应时间等,但我想创造一些自定义的事件和日志的一样好,但我不能让任何他的自定义事件将显示在Azure门户中.目前我正在使用免费版的Application Insights.
非常直截了当
var appInsights = new TelemetryClient();
appInsights.TrackEvent(eventName, properties);
Run Code Online (Sandbox Code Playgroud)
eventName是一个字符串,包含我想要跟踪的自定义事件,属性是一个字典来跟踪一些其他属性.
我运行应用程序并点击那些线了几次后,我就可以去蔚蓝的门户网站,看到的基本信息,但是当我做一个搜索它说,有0自定义事件,并通过搜索任何自定义事件name不返回任何结果.
我有一个类,下面有遥测器的东西
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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我用它的一个简单例子是
Tracker.TrackEvent("Visit HomePage", User.Identity.Name);
Run Code Online (Sandbox Code Playgroud)
编辑:上面的事件正在运行,但下面的事件不是,它根本没有记录这个.这会调用TrackRequest以及TelementryClient上的TrackEvent,但我根本没有看到这些.
Tracker?.TrackRequest("Drill Report", userName, stopwatch.Elapsed,
new Dictionary<string, string>
{
{ "DrillBy", report.DrillBy == null ? "None" : report.DrillBy.FriendlyName }
});
Run Code Online (Sandbox Code Playgroud)
我有点拿回来.我看到其中一些事件发生了,但是我把它们背靠背记录了一下,我只看到6个我应该看到的中的2个?什么想法可能会发生什么?
Application Insights遥测客户端具有内存缓冲区和刷新间隔(据我所记得,默认为1分钟),用于将缓冲的遥测发送到AI端点。
您的Track方法具有遥测客户端的本地成员,该成员在实际将数据刷新到AI端点之前已被“垃圾收集”。因此,您有三种选择(首先推荐):