跟踪、调试和信息消息未从 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"
      }
    }
  }
}

这是我这边的测试结果: