Application Insight日志是否为后台进程?TrackTrace是否阻塞线程?
Application Insight 中
TrackTrace 的执行机制 - 默认状态下,调用
_telemetryClient.TrackTrace("Message")不会阻塞当前线程。它仅会把追踪消息加入本地内存队列,由后台线程负责批量将队列中的数据发送到Application Insight服务端。 - 这类设计的核心目的是避免遥测采集逻辑拖累业务代码的执行性能,Application Insight的所有
Track系列方法(包括TrackException、TrackEvent等)都采用了类似的异步队列处理模式。 - 极端场景下(比如短时间内生成大量遥测数据导致内存队列被占满),后续的
Track调用可能会触发阻塞行为,具体是否阻塞取决于你配置的TelemetryConfiguration中的MaxTelemetryBufferCapacity、SamplingSettings等参数。 - 若你需要确保遥测数据被同步发送(例如应用关闭前的收尾操作),可以调用
_telemetryClient.Flush()方法,该方法会阻塞线程直到队列中的数据完成发送(或触发超时)。
内容的提问来源于stack exchange,提问作者Mohammad Taherian
相关产品推荐
相关产品推荐

