Настройка уровня журнала для функций Azure

У меня есть приложение-функция Azure, в котором настроено понимание приложения. Мои функции имеют некоторые LogTrace() сообщения, но они не перехватываются AppInsights. Нужно ли где-то настраивать минимальный уровень логирования?

2 ответа

Решение

Пожалуйста, взгляните на эту статью о том, как установить уровень журнала для функции v1 или v2.

В файле host.json для поля "Функция" установите значение Trace. Затем LogTrace() можно войти в понимание приложения.

Пример файла host.json для функции Azure v2, которая может записывать сообщения трассировки в сведения о приложении:

{
  "version": "2.0",
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Error",
      "Function": "Trace",
      "Host.Aggregator": "Trace"
    }
  }
}

И если вы публикуете свое функциональное приложение в Visual Studio, вы можете изменить файл host.json, как указано выше, перед публикацией.

И если вы хотите изменить уровень журнала на портале Azure, выполните следующие действия:

На портале Azure перейдите к своему приложению-функции -> в настройках приложения-функции, убедитесь, что включили чтение / запись, а затем измените уровень журнала для отслеживания в файле host.json.

Я не вижу ни одного файла host.josn на портале Azure, но я могу обновить его в настройках приложения (переменная среды). Чтобы заменить ключ набора уровня журнала по умолчанию AzureFunctionsJobHost__logging__LogLevel__Default и ценность Trace/Debug/Informationили как хотите. Как для меня в моем host.json Default является Trace но в лазурном это Information. Так что просто добавьте новую переменную среды (настройки приложения) и префикс с AzureFunctionsJobHost__logging__LogLevel__для всех ключей loglevel и установите желаемое значение, и настройки вашего хоста будут отменены. Вы можете прочитать больше здесь

Чтобы еще больше добавить отличный ответ @Ivan Yang, вы можете указать минимальный уровень ведения журнала для каждой функции в v2 функций Azure. (Я не проверял, работает ли это / не работает в v1) Используя его пример host.json:

{
  "version": "2.0",
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Error",
      "Function": "Trace",
      "Function.FunctionA": "Warning",
      "Host.Aggregator": "Trace"
    }
  }
}

Function.FunctionA предполагает, что у вас есть функция с именем (через FunctionName атрибут) "FunctionA", например:

[FunctionName("FunctionA")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "")]HttpRequest req, ILogger log)
{
  ...function code here
}

Итак, какое бы значение вы не указали в FunctionName Атрибут может использоваться для явного определения минимального уровня журнала только для этой функции. в host.json Пример выше, все функции, по умолчанию, будут иметь минимальный уровень журнала Trace в то время как FunctionA будет иметь минимальный уровень журнала Warning,

Другие вопросы по тегам