跟踪、调试和信息消息未从 WorkerService 到达 App Insights
Trace, Debug and Information messages not reaching App Insights from WorkerService
我花了一整天的时间试图找到一些东西来解释为什么我在 Azure 中 运行 我的 WorkerService 时在应用洞察中看不到任何跟踪、调试或信息消息。 WorkerService 托管在我们企业 space 的 Linux (Ubuntu 18.4) VM 中,并且在所有其他方面都工作正常。
关键、错误和警告消息正在通过,因此连接已正确建立,但似乎在进程结束时过滤了消息。
appsettings.json的相关日志部分如下:
"Logging": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
},
...这应该允许我期望的一切通过。我的测试代码是...
log.LogTrace("WorkerService: Trace");
log.LogDebug("WorkerService: Debug");
log.LogInformation("WorkerService: Information");
log.LogWarning("WorkerService: Warning");
log.LogError("WorkerService: Error");
log.LogCritical("WorkerService: Critical");
...但我注意到当我 运行 本地代码时,输出 window 显示以下内容...
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Information: Executing action method MyWorkerService.Features.HealthCheck.HealthCheckController.GetAdvancedHealthCheck (MyWorkerService) - Validation state: Valid
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Trace: Trace
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Debug: Debug
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Information: Information
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Warning: Warning
Application Insights Telemetry: {"name":"AppTraces","time":"2020-12-15T08:04:49.6657815Z","iKey":"8d4d3ae1-xxxx-xxxx-xxxx-029e472df754","tags":{"ai.application.ver":"1.0.0.0" ...<snip>... "TraceId":"520378xxxxxxxxxxxxxxxxxxxxe5a1b5"}}}}
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Error: Error
Application Insights Telemetry: {"name":"AppTraces","time":"2020-12-15T08:04:49.6688389Z","iKey":"8d4d3ae1-xxxx-xxxx-xxxx-029e472df754","tags":{"ai.application.ver":"1.0.0.0" ...<snip>... "TraceId":"520378xxxxxxxxxxxxxxxxxxxxe5a1b5"}}}}
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Critical: Critical
Application Insights Telemetry: {"name":"AppTraces","time":"2020-12-15T08:04:49.6854384Z","iKey":"8d4d3ae1-xxxx-xxxx-xxxx-029e472df754","tags":{"ai.application.ver":"1.0.0.0" ...<snip>... "TraceId":"520378xxxxxxxxxxxxxxxxxxxxe5a1b5"}}}}
...这也表明未将跟踪、调试和信息消息发送到 Azure。
我正在使用“Microsoft.ApplicationInsights.WorkerService”Version="2.16.0" nuget 包,但看不到我还需要配置什么来更改限制传输数据的过滤器。
感谢接受任何帮助或建议。
对于 appsettings.json
,请确保您已将 属性 copy to output directory
设置为 copy if newer
(在 visual studio 中,右键单击 appsettings.json -> select 个属性)。
然后将ApplicationInsights
部分放入Logging
部分。如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Trace",
"Microsoft.Hosting.Lifetime": "Trace"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
}
}
}
这是我这边的测试结果:
我花了一整天的时间试图找到一些东西来解释为什么我在 Azure 中 运行 我的 WorkerService 时在应用洞察中看不到任何跟踪、调试或信息消息。 WorkerService 托管在我们企业 space 的 Linux (Ubuntu 18.4) VM 中,并且在所有其他方面都工作正常。
关键、错误和警告消息正在通过,因此连接已正确建立,但似乎在进程结束时过滤了消息。
appsettings.json的相关日志部分如下:
"Logging": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
},
...这应该允许我期望的一切通过。我的测试代码是...
log.LogTrace("WorkerService: Trace");
log.LogDebug("WorkerService: Debug");
log.LogInformation("WorkerService: Information");
log.LogWarning("WorkerService: Warning");
log.LogError("WorkerService: Error");
log.LogCritical("WorkerService: Critical");
...但我注意到当我 运行 本地代码时,输出 window 显示以下内容...
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Information: Executing action method MyWorkerService.Features.HealthCheck.HealthCheckController.GetAdvancedHealthCheck (MyWorkerService) - Validation state: Valid
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Trace: Trace
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Debug: Debug
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Information: Information
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Warning: Warning
Application Insights Telemetry: {"name":"AppTraces","time":"2020-12-15T08:04:49.6657815Z","iKey":"8d4d3ae1-xxxx-xxxx-xxxx-029e472df754","tags":{"ai.application.ver":"1.0.0.0" ...<snip>... "TraceId":"520378xxxxxxxxxxxxxxxxxxxxe5a1b5"}}}}
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Error: Error
Application Insights Telemetry: {"name":"AppTraces","time":"2020-12-15T08:04:49.6688389Z","iKey":"8d4d3ae1-xxxx-xxxx-xxxx-029e472df754","tags":{"ai.application.ver":"1.0.0.0" ...<snip>... "TraceId":"520378xxxxxxxxxxxxxxxxxxxxe5a1b5"}}}}
MyWorkerService.Features.HealthCheck.GetAdvancedHealthCheck.Handler: Critical: Critical
Application Insights Telemetry: {"name":"AppTraces","time":"2020-12-15T08:04:49.6854384Z","iKey":"8d4d3ae1-xxxx-xxxx-xxxx-029e472df754","tags":{"ai.application.ver":"1.0.0.0" ...<snip>... "TraceId":"520378xxxxxxxxxxxxxxxxxxxxe5a1b5"}}}}
...这也表明未将跟踪、调试和信息消息发送到 Azure。
我正在使用“Microsoft.ApplicationInsights.WorkerService”Version="2.16.0" nuget 包,但看不到我还需要配置什么来更改限制传输数据的过滤器。
感谢接受任何帮助或建议。
对于 appsettings.json
,请确保您已将 属性 copy to output directory
设置为 copy if newer
(在 visual studio 中,右键单击 appsettings.json -> select 个属性)。
然后将ApplicationInsights
部分放入Logging
部分。如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Trace",
"Microsoft.Hosting.Lifetime": "Trace"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
}
}
}
这是我这边的测试结果: