Net Core 3 ILogger Отслеживание зависимостей AppInsights - PullRequest
0 голосов
/ 25 февраля 2020

Я использую ILogger (Microsoft.Extensions.Logging) вместе с информацией о приложении. Мне было интересно при использовании BeginScope() как мне автоматически отслеживать все зависимости как часть этого, если это вообще возможно?

Например, этот код:

            using (var scope = this.logger.BeginScope(new Dictionary<string, string>
            {
                { "Reference", "HelloWorld" }
            }))
            {
                this.logger.LogDebug("Foo");
                this.logger.LogInformation("Bar.");
                var response = await this.httpClient.PostAsync(..); // dependency tracking
            }

Это будет регистрировать поле Reference как пользовательское измерение на трассе, однако записи зависимостей не имеют каких-либо пользовательских измерений для него. Это нужно сделать вручную или я что-то упустил?

enter image description here

Следует уточнить, эти ^^ не привязаны к отслеживаемым записям зависимостей, и я Я пользуюсь размещенным сервисом и подключаю информацию о приложении через services.AddApplicationInsightsTelemetryWorkerService()

1 Ответ

0 голосов
/ 27 февраля 2020

В настоящее время невозможно группировать телеметрические объекты на основе объема илогера.

Рекомендованным способом понимания приложений для логической группировки групп телеметрии является использование StartOperation API. Простой пример показан ниже:

using (telemetryClient.StartOperation<RequestTelemetry>("logical operation to be grouped."))
            {
                using (var scope = logger.BeginScope(new Dictionary<string, object>
                    {
                        { "Reference", "HelloWorld" }
                    }))
                {
                    logger.LogWarning("Foo");
                    var res = new HttpClient().GetAsync("https://bing.com").Result.StatusCode;
                }
            }

В этом примере вся сгенерированная телеметрия - «телеметрия родительского запроса», журналы илоггера, телеметрия зависимостей (и все остальное в StartOperation) будет иметь тот же идентификатор операции и может быть запрошен, как показано ниже:

union requests,dependencies,traces 
| where operation_Id == 'daf85c73470f80448394748b5067f6e8'

Analytics results

Также обратите внимание, что в обычном веб-приложении вся телеметрия генерируется из области действия один запрос будет автоматически сопоставлен. В приведенном выше примере показано, как применить группировку вручную - обычно это требуется в консольных приложениях и т. Д. c.

...