应用洞察 |如何在应用程序洞察中仅显示预期功能应用程序的日志?
Application Insights | How to show logs for only the intended function app in application insights?
我有几个函数应用程序(FunctionApp1 和 FunctionApp2)。 FunctionApp1 向 FunctionApp2 使用的服务总线队列发送消息。
执行流时,Application Insights 中的日志显示组合流的日志。当我在 Application Insights 的 Performance
选项卡中检查 FunctionApp1 的特定日志时,它也会显示 FunctionApp2 的日志,反之亦然。
我尝试在执行 FunctionApp1 时禁用 FunctionApp2 的日志记录,方法是在 host.json
文件中为 FunctionApp1 设置日志级别,如下所示:
{
"logging": {
"LogLevel": {
"Function.FunctionApp2":"None",
"default":"debug"
}
}
}
这将完全禁用 FunctionApp2 的日志。
我该如何设置,以便在请求 FunctionApp1 的日志时只显示它的日志,FunctionApp2 也一样?
更新
我尝试在 FunctionApp1 的 host.json 文件中将 EnableDependencyTracking
设置为 false,如下所示:
{
"logging": {
"LogLevel": {
"default":"debug"
},
"applicationInsights": {
"enableDependencyTracking": false
},
....
}
}
这个也没用。
TelemetryContext
有一个 属性 叫做 Parent operation Id。根据文档,它会跟踪遥测项目的直接父级。因此,我像这样使用自定义遥测更新了遥测的父级(以下代码在 FunctionApp2 中实现):
var dependency = new DependencyTelemetry();
// Appended UTC ticks to GUID to avoid conflicting Azure's generated GUIDs in case any future ParentId matches Azure's already generated GUID.
dependency.Context.Operation.ParentId = $"{Guid.NewGuid():N}{DateTimeOffset.UtcNow.Ticks}";
_telemetryClient.TrackDependency(dependency);
DependencyTelemetry
使用依赖注入注入到函数应用程序中,如下所示:
_telemetryClient = new TelemetryClient(telemetryConfiguration);
TelemetryConfiguration
已作为服务添加到 Startup.cs
class:
services.Configure<TelemetryConfiguration>((x) =>
{
x.InstrumentationKey = Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
x.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
});
请参阅 ApplicationInsight 的问题 1152 以获取有关上述代码的更多详细信息。
回到更新遥测操作的父 ID,它确保 FunctionApp2 的遥测未链接到 FunctionApp1 的遥测。
我有几个函数应用程序(FunctionApp1 和 FunctionApp2)。 FunctionApp1 向 FunctionApp2 使用的服务总线队列发送消息。
执行流时,Application Insights 中的日志显示组合流的日志。当我在 Application Insights 的 Performance
选项卡中检查 FunctionApp1 的特定日志时,它也会显示 FunctionApp2 的日志,反之亦然。
我尝试在执行 FunctionApp1 时禁用 FunctionApp2 的日志记录,方法是在 host.json
文件中为 FunctionApp1 设置日志级别,如下所示:
{
"logging": {
"LogLevel": {
"Function.FunctionApp2":"None",
"default":"debug"
}
}
}
这将完全禁用 FunctionApp2 的日志。
我该如何设置,以便在请求 FunctionApp1 的日志时只显示它的日志,FunctionApp2 也一样?
更新
我尝试在 FunctionApp1 的 host.json 文件中将 EnableDependencyTracking
设置为 false,如下所示:
{
"logging": {
"LogLevel": {
"default":"debug"
},
"applicationInsights": {
"enableDependencyTracking": false
},
....
}
}
这个也没用。
TelemetryContext
有一个 属性 叫做 Parent operation Id。根据文档,它会跟踪遥测项目的直接父级。因此,我像这样使用自定义遥测更新了遥测的父级(以下代码在 FunctionApp2 中实现):
var dependency = new DependencyTelemetry();
// Appended UTC ticks to GUID to avoid conflicting Azure's generated GUIDs in case any future ParentId matches Azure's already generated GUID.
dependency.Context.Operation.ParentId = $"{Guid.NewGuid():N}{DateTimeOffset.UtcNow.Ticks}";
_telemetryClient.TrackDependency(dependency);
DependencyTelemetry
使用依赖注入注入到函数应用程序中,如下所示:
_telemetryClient = new TelemetryClient(telemetryConfiguration);
TelemetryConfiguration
已作为服务添加到 Startup.cs
class:
services.Configure<TelemetryConfiguration>((x) =>
{
x.InstrumentationKey = Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
x.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
});
请参阅 ApplicationInsight 的问题 1152 以获取有关上述代码的更多详细信息。
回到更新遥测操作的父 ID,它确保 FunctionApp2 的遥测未链接到 FunctionApp1 的遥测。