Я провел весь последний день, пытаясь найти что-нибудь, чтобы объяснить, почему я не вижу никаких сообщений о трассировке, отладке или информационных сообщениях в аналитике приложений, когда запускаю свой WorkerService в Azure. WorkerService размещается на виртуальной машине Linux (Ubuntu 18.4) в нашем корпоративном пространстве и во всех остальных отношениях работает нормально.
Критические сообщения, сообщения об ошибках и предупреждения проходят, поэтому соединение установлено правильно, но что-то, похоже, фильтрует сообщения в конце процесса.
Соответствующая часть журнала 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");
... но я заметил, что когда я запускаю код локально, окно вывода показывает следующее...
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.
Я использую пакет nuget «Microsoft.ApplicationInsights.WorkerService» Version = «2.16.0», но не вижу, что еще мне нужно настроить, чтобы изменить фильтр, ограничивающий передаваемые данные.
Любая помощь или предложения с благодарностью принимаются.
Вся остальная информация в файле appsettings.json не связана с ведением журнала, относится к конкретному приложению и содержит конфиденциальную информацию — это единственная важная часть.
Для appsettings.json
убедитесь, что вы установили свойство copy to output directory
как copy if newer
(в Visual Studio щелкните правой кнопкой мыши appsettings.json -> выберите свойства).
А затем поместите раздел ApplicationInsights
в раздел Logging
. Как показано ниже:
{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft": "Trace",
"Microsoft.Hosting.Lifetime": "Trace"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Trace",
"System": "Trace",
"Microsoft": "Trace"
}
}
}
}
Вот результат теста на моей стороне:
Извините за задержку, я был в отпуске :) Кажется, образцы, которые я использовал, не отображали раздел ApplicationInsights в разделе ведения журналов, но как отдельный раздел — немного запутанный, но теперь все отсортировано. Ваше здоровье.
пожалуйста, добавьте заполненный файл appsettings.json.