ILogger не регистрируется в Application Insights при использовании долговременных функций Azure Function V2 - PullRequest
1 голос
/ 06 апреля 2019

Может кто-нибудь, пожалуйста, объясните, как заставить ILogger действительно что-то регистрировать в приложениях Insight при использовании Azure Function V2 (.net Core)?

Мы настроили Application Insights, и он показывает телеметрию в реальном времени и необработанные исключения. То, что мы пытаемся сделать, - это заставить приложение Insights хранить журналы, которые мы создаем с помощью ILogger по умолчанию.

Независимо от того, какой тип logLevel мы используем (Информация, Предупреждение, Ошибка, Критическое) - ничего не сохраняется в понимании приложений.

Я также пытался создать 500 сообщений в журнале в надежде, что это может подтолкнуть его к пониманию приложения в виде пакета.

Я что-то упускаю здесь очевидное? Может кто-нибудь подсказать, как использовать ILogger по умолчанию, чтобы он передавал что-то в Application Insights, связанный с функцией Azure App V2 (ядро .net)?

host.json

{
  "version": "2.0",
  "functionTimeout": "00:10:00",
  "extensions": {
    "durableTask": {
      "maxConcurrentActivityFunctions": 4,
      "maxConcurrentOrchestratorFunctions": 1
    }
  },
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 5
      }
    }
  }
}

Функция Azure V2, TimerTrigger, DurableOrchestrationClient:

[FunctionName("MainTriggerEntry")]
public static async Task RunMainTriggerEntry([TimerTrigger("%CRON_EXPRESSION%", RunOnStartup = false)]TimerInfo timer,
[OrchestrationClient]DurableOrchestrationClient starter, ILogger log)
{
    log.LogInformation("[Information] Message!");
    log.LogError("[Error]. Something occured");
    log.LogCritical("[Critical] Critical issue");
    for (var i = 0; i < 500; i++)
    {
        log.LogWarning($"[Warning] Logging to Application insights. {i}");
    }

    // We don't want more than one orchestrator running at the same time:
    var orchestrationStatus = await starter.GetStatusAsync(OrchestratorInstanceGuid);
    if (orchestrationStatus == null || !orchestrationStatus.IsBusy())
    {
        var instanceId = await starter.StartNewAsync(OrchestratorFunctionName, OrchestratorInstanceGuid, null);
        log.LogInformation($"Triggering {OrchestratorFunctionName} function with an ID '{instanceId}'.");
    }
    else
    {
        log.LogInformation($"{OrchestratorFunctionName} function with an ID '{OrchestratorInstanceGuid}' is already running.");
    }
}

Ничего не отображается в комментариях к приложениям, которые мы зарегистрировали. Но сбои появляются так, как должны: enter image description here

Это показывает, что ILogger что-то сохраняет на диске: enter image description here

Подробнее:

  • Пакет Nuget Microsoft.NET.SDK.Functions v1.0.26
  • Функция Azure v2 подключена к аналитическим сведениям Apllication с помощью APPINSIGHTS_INSTRUMENTATIONKEY
  • Информация о приложении показывает прямую телеметрию и исключения
  • Приложение показывает некоторые данные, но не из ILogger

1 Ответ

3 голосов
/ 06 апреля 2019

Журнал активности - это не то место, где вы хотите искать свои журналы. Журналы, написанные с использованием Ilogger, сохраняются в виде трасс в комментариях к приложениям. Вы можете запросить их, используя пункт меню Поиск (опция прямо над пунктом меню Доступность на втором снимке экрана)

Журнал активности покажет вам события, относящиеся к самому ресурсу, а не к данным, которые он содержит.

...