在此期间发送了太多数据,并已在 Application Insights 中删除

use*_*502 5 azure azure-application-insights

使用 Application Insight 进行日志记录时,我收到以下跟踪消息“在此期间发送了太多数据,为了调试器响应而将其删除”。

我真的很想看到所有数据(总共 22 个日志条目,其中大约显示 8 个,其余的被删除)

关于如何配置这个有什么想法吗?

Mur*_*oft 4

您需要禁用采样才能记录来自应用程序洞察的所有日志。

例如,如果您使用的是 ASP.NET Core,您可以按照文档中的以下代码片段配置采样。

public void ConfigureServices(IServiceCollection services)
{
// ...

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
aiOptions.EnableAdaptiveSampling = false;
services.AddApplicationInsightsTelemetry(aiOptions);

//...
}
Run Code Online (Sandbox Code Playgroud)

请记住,App Insights 的最长保留期为 90 天。

如果您在 Visual Studio 中遇到“在此期间发送了太多数据,并且由于调试器响应能力而被删除”消息,请查看此线程。简而言之,它表示您可以(在某种程度上)配置 Visual Studio 以在开始过滤消息之前显示更多数据。但是,使用这些设置并不是一个好主意,如果您有大量日志需要检查(大型条目和/或许多条目),则应该通过 Application Insights 用户 Web 界面执行此操作,该界面(只要采样配置为关闭),就会保留所有日志条目。

引用如下:

“数据太多”消息仅出现在 VS 中(它不会影响sdks发送的数据),并且如果我们看到调试器输出太大而无法在不减慢调试器速度的情况下“舒适地”处理,则会触发该消息。

基本上,调试器批量输出窗口消息并处理它们。如果我们看到非常大的内容,我们会对它们进行简单的包含检查,而不是正则表达式检查。如果该文本块包含我们必须解析的任何人工智能消息,并且很大(默认为 20k 个字符),我们会跳过处理它(我们必须找到大块中的每个事件,解析每个事件等)并且相反,显示该消息;为了节省调试器时间,我们只是跳过整个批次并添加有遥测的注释(您可以在输出窗口中看到它,它将由 sdk 发送),但调试器工具并没有浪费时间解析所有内容。

有一种方法可以更改我们在调试器中用作阈值的值,但它们最终会使您的 VS 体验变慢,因为我们会花费更多时间来解析输出窗口中的事件。如果您已经确定它是什么(一个巨大的 EF 查询),我不确定您是否想要更改设置以使我们解析它以将其显示给您。