无法让嵌套的 StartOperation 显示在过滤器下拉列表中
Can't get nested StartOperation to show up in the filter dropdown
我有一个 ASP.NET 核心应用程序配置为登录到 Application Insights。我还有这种方法可用于在 Application Insights 时间线内创建依赖项:
private void TestLogOperations()
{
using (IOperationHolder<DependencyTelemetry> topHolder = telemetryClient.StartOperation<DependencyTelemetry>("TopOperation"))
{
logger.LogWarning("top holder log");
using (IOperationHolder<DependencyTelemetry> innerHolder = telemetryClient.StartOperation<DependencyTelemetry>("InnerOperation"))
{
logger.LogWarning("inner holder log");
}
}
}
操作正确嵌套在时间轴中:
但是当我想按依赖项过滤时(例如我只想过滤 "InnerOperation" 内的日志),它们不会出现在下拉列表中,只显示顶部请求操作 (localhost:5000 | POST User/Post):
我知道可以按依赖项进行过滤,因为我曾处理过这样做的项目,但我该怎么做?
根据我的测试,这是 DependencyTelemetry.
的默认行为
如果您想在 post 中显示您想要的内容,您应该将 DependencyTelemetry 更改为 RequestTelemetry。
测试代码如下:
private void TestLogOperations()
{
using (IOperationHolder<RequestTelemetry> topHolder = telemetryClient.StartOperation<RequestTelemetry>("TopOperation1"))
{
//telemetryClient.TrackTrace("top holder log 111");
_logger.LogWarning("top holder log 1");
using (IOperationHolder<RequestTelemetry> innerHolder = telemetryClient.StartOperation<RequestTelemetry>("InnerOperation1"))
{
//telemetryClient.TrackTrace("inner holder log 1 111");
_logger.LogWarning("inner holder log 1");
}
}
}
而测试结果:
我有一个 ASP.NET 核心应用程序配置为登录到 Application Insights。我还有这种方法可用于在 Application Insights 时间线内创建依赖项:
private void TestLogOperations()
{
using (IOperationHolder<DependencyTelemetry> topHolder = telemetryClient.StartOperation<DependencyTelemetry>("TopOperation"))
{
logger.LogWarning("top holder log");
using (IOperationHolder<DependencyTelemetry> innerHolder = telemetryClient.StartOperation<DependencyTelemetry>("InnerOperation"))
{
logger.LogWarning("inner holder log");
}
}
}
操作正确嵌套在时间轴中:
但是当我想按依赖项过滤时(例如我只想过滤 "InnerOperation" 内的日志),它们不会出现在下拉列表中,只显示顶部请求操作 (localhost:5000 | POST User/Post):
我知道可以按依赖项进行过滤,因为我曾处理过这样做的项目,但我该怎么做?
根据我的测试,这是 DependencyTelemetry.
的默认行为如果您想在 post 中显示您想要的内容,您应该将 DependencyTelemetry 更改为 RequestTelemetry。
测试代码如下:
private void TestLogOperations()
{
using (IOperationHolder<RequestTelemetry> topHolder = telemetryClient.StartOperation<RequestTelemetry>("TopOperation1"))
{
//telemetryClient.TrackTrace("top holder log 111");
_logger.LogWarning("top holder log 1");
using (IOperationHolder<RequestTelemetry> innerHolder = telemetryClient.StartOperation<RequestTelemetry>("InnerOperation1"))
{
//telemetryClient.TrackTrace("inner holder log 1 111");
_logger.LogWarning("inner holder log 1");
}
}
}
而测试结果: