使用 ASP.NET Core 2.0 减少 Application Insights 中的跟踪数据

Reduce trace data in Application Insights with ASP.NET Core 2.0

我有两个 ASP.NET Core 2.0 Web 应用程序 运行 相似的代码,都启用了 Application Insights。

站点 "A" 以 netcoreapp2.0 框架为目标。当我查看数据量管理时,它会生成大量 "Trace" 数据,并且每天快速生成数 GB 的数据。我负担不起,老实说,我什至不知道它对我有什么用,也不知道如何查看这些数据。我已将数据采样率设置为 8%,但在一天结束之前它仍然达到我想要的 1 GB 限制。

站点 "B" 以 net47 框架(完整的 .NET 框架)为目标。此 Web 应用程序几乎不生成 "Trace" 数据,而且数据量更易于管理。我的中等流量站点在没有数据采样的情况下轻松地保持在我期望的每天 1 GB 的限制之下。

站点 B 处理的流量大约是站点 A 的两倍,并且还有更多的依赖调用 -- 所以这与流量无关,这绝对是站点之间的配置差异。

问题 1:与定位 net47 相比,为什么定位 netcoreapp2.0 会导致 Application Insights 生成大量的 Trace 数据?

问题 2:如何防止 Application Insights 在面向 netcoreapp2.0 时生成这种非常昂贵的跟踪数据?或者更一般地说,如何在 ASP.NET Core 2.0 Web 应用程序中控制 Application Insights Trace 数据收集?

进一步探索后,我偶然发现了关于 github 问题的评论:

https://github.com/Microsoft/ApplicationInsights-aspnetcore/issues/523#issuecomment-341285608

看来Application Insights确实在一个asp.net核心应用中注册了自己的ILogger,并且把所有的logging都变成了AI trace数据。如果您不将其设置为“警告”或更高级别,那将是大量数据,因此请当心!

您可以像 asp.net 核心中的其他记录器一样设置日志记录级别或禁用它。