Настройка уровня журнала для функций 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
,