#azure-functions #azure-application-insights #ilogger
#azure-функции #azure-application-insights #ilogger
Вопрос:
Я использую Azure function v3 на .net core 3.x, где ILogger<T>
создается путем внедрения зависимостей соответствующего класса T через IServiceProvider like ILogger<T> _log = _log = serviceProvider.GetService<ILogger<T>>();
Кроме _log.LogMetric()
любых других сообщений журнала (трассировки, информация, ошибка, исключение и т.д.) Передаются в Application Insight. Я проверил раздел трассировки поиска транзакций, а также трассировки и пользовательские показатели журналов.
Даже конфигурация ведения журнала файла host.json кажется правильной. Итак, что я делаю не так?
Комментарии:
1. Где в Application Insigths вы хотите найти эти показатели? (Просто чтобы убедиться, что вы смотрите в нужное место)
2. @PeterBons В разделе поиска транзакций (в основном трассировки). Но также выполняйте поиск в журналах трассировок и пользовательских метриках.
3. Можете ли вы опубликовать содержимое host.json и, возможно, некоторый код функции, вызывающей logmetrics?
4. У меня идентичная проблема, вы ее решили?
Ответ №1:
На Github есть сообщение об этом, которое предполагает, что это ошибка. Существует обходной путь для внедрения TelemetryClient
и использования client.TrackMetric();
Вы можете сделать это: services.AddSingleton<TelemetryClient>(x => new TelemetryClient(configuration.GetSection("ApplicationInsights:InstrumentationKey").Get<string>()))
Конфигурация здесь, будучи вашей IConfiguration
или IConfigurationRoot
Затем после внедрения в вашу службу просто вызовите метод, client.TrackMetric(metricName, metricValue, dictionaryProperties);
Сообщение, о котором идет речь:https://github.com/Azure/azure-webjobs-sdk/issues/2308
Просто обратите внимание на то, что если вы используете TelemetryClient, вы захотите самостоятельно агрегировать эти показатели с помощью этого обходного пути:
Ответ №2:
Из документа вы обнаружите, что в Application Insight будут передаваться только информация, предупреждение, отладка, ошибка и трассировка.
Эти пять уровней журнала не содержат LogMetric.
Комментарии:
1. LogMetric — это не уровень журнала, а метод расширения, который отправляет данные, используя уровень журнала информации ( источник ). Таким образом, этот ответ неверен / релевантен с учетом текущего содержимого