Включение и настройка ведения журнала приложений в службе приложений
В этом уроке мы рассмотрим, как ведение журнала приложений может помочь в веб-приложениях и покажем, как включить журналы приложений.
Что представляют собой журналы приложений?
Azure предоставляет встроенные средства диагностики для ведения журналов приложений. Журналы приложений — это выходные данные инструкций трассировки среды выполнения в коде приложения. Например, может потребоваться проверить некоторую логику в коде, добавив трассировку для отображения при обработке определенной функции. Кроме того, может потребоваться увидеть сообщение в журнале только при возникновении определенного уровня ошибки. Ведение журнала приложений в основном предназначено для приложений в предварительной версии и для проблемных проблем, так как чрезмерные журналы могут нести удар по производительности и быстро использовать хранилище. По этой причине ведение журнала в файловой системе автоматически отключено через 12 часов.
Журналы приложений имеют ограничения по размеру, в основном потому, что для сохранения выходных данных журнала используются файлы. Если у вас есть несколько экземпляров приложения, а одно и то же хранилище совместно используется для всех экземпляров, сообщения из разных экземпляров могут быть переплетированы, что затрудняет устранение неполадок. Если у каждого экземпляра есть собственный файл журнала, то есть несколько журналов, что еще раз затрудняет устранение неполадок, связанных с экземпляром.
Типы ведения журнала, доступные через службу приложений Azure, зависят от платформы кода приложения и от того, выполняется ли приложение на узле Windows или Linux.
ASP.NET
Приложения ASP.NET могут выполняться только в службах приложений Windows. Для записи информации в журнал диагностики приложения используется класс System.Diagnostics.Trace
. Вы можете использовать четыре уровня трассировки, которые сопоставляются с error
warning
information
уровнями ведения журнала, а verbose
также уровнями ведения журнала, показанными в портал Azure:
- Trace.TraceError("Message"); // Записывает сообщение об ошибке
- Trace.TraceWarning("Message"); // Записывает предупреждение
- Trace.TraceInformation("Message"); // Записывает информационное сообщение
- Trace.WriteLine("Message"); // Записывает подробное сообщение
Приложения ASP.NET Core
Приложения ASP.NET Core можно запускать в Windows или Linux. Для записи информации в журналы приложений Azure используйте фабрику logger класса и один из шести уровней ведения журналов:
- logger.LogCritical("Message"); // Записывает критическое сообщение на уровне журнала 5
- logger.LogError("Message"); // Записывает сообщение об ошибке на уровне журнала 4
- logger.LogWarning("Message"); // Записывает предупреждающее сообщение на уровне журнала 3
- logger.LogInformation("Message"); // Записывает информационное сообщение на уровне журнала 2
- logger.LogDebug("Message"); // Записывает сообщение об отладке на уровне журнала 1
- logger.LogTrace("Message"); // Записывает подробное сообщение трассировки на уровне журнала 0
Для приложений ASP.NET Core в Windows эти сообщения связаны с фильтрами на портале Azure следующим образом:
- Уровни 4 и 5 — это сообщения об ошибках .
- Уровень 3 — это предупреждение .
- Уровень 2 — это информационное сообщение.
- Уровни 0 и 1 — это подробные сообщения.
Для приложений ASP.NET Core в Linux регистрируются только сообщения об ошибках (уровни 4 и 5).
Приложения Node.js
Для веб-приложений на основе скрипта, таких как приложения Node.js в Windows или Linux, ведение журналов приложений включается с помощью метода console():
- console.error("Message"); Записывает сообщение в STDERR.
- console.log("Message"); Записывает сообщение в STDOUT.
Оба типа сообщения записываются в журналы ошибок службы приложений Azure.
Различия в ведении журнала для узлов Windows и Linux
Для маршрутизации сообщений в файлы журналов веб-приложения Azure используют веб-сервер службы IIS (IIS). Поскольку веб-приложения на базе Windows — это испытанная служба Azure, и обмен сообщениями для приложений ASP.NET хорошо интегрирован с базовой службой IIS, приложения Windows могут использовать инфраструктуру ведения журнала с широкими возможностями. Для других приложений параметры ведения журнала ограничены платформой разработки, даже если она запущена в службе приложений Windows.
Образ Docker, используемый для контейнера приложения, определяет функциональные возможности ведения журнала, доступные для приложений на основе Linux, таких как Node. Базовое ведение журнала, например использование перенаправлений на STDERR или STDOUT, использует журналы Docker. Расширенные функции ведения журнала зависят от базового образа, а также от того, работает ли он PHP, Perl, Ruby и т. д. Для скачивания эквивалентного ведения журнала веб-приложений, предоставляемых IIS для приложений Windows, может потребоваться подключение к контейнеру с помощью SSH.
В следующей таблице перечислена поддержка ведения журнала для распространенных сред и узлов приложений.
Среда приложения | Хост | Уровни журнала | Расположение |
---|---|---|---|
ASP.NET | Windows | Ошибка, предупреждение, информация, подробно | Файловая система, хранилище BLOB-объектов |
ASP.NET Core | Windows | Ошибка, предупреждение, информация, подробно | Файловая система, хранилище BLOB-объектов |
ASP.NET Core | Linux | Ошибка | Файловая система |
Node.js | Windows | Ошибка (STDERR), информация (STDOUT), предупреждение, подробно | Файловая система, хранилище BLOB-объектов |
Node.js | Linux | Ошибка | Файловая система |
Java | Linux | Ошибка | Файловая система |
Другие способы диагностики приложений
приложение Azure Insights — это расширение сайта, которое предоставляет дополнительные функции мониторинга производительности, такие как подробные данные об использовании и производительности. Application Insights предназначен для развертывания рабочих приложений и является потенциально полезным средством разработки. Он работает с различными средами разработки приложений, предоставляя тот же набор расширенных данных телеметрии и производительности, ASP.NET или Node. Тем не менее для использования Application Insights вам необходимо включать код в приложение с помощью пакета SDK App Insights. Application Insights также является оплачиваемой службой. Таким образом, в зависимости от масштаба развертывания приложений и собранных данных может потребоваться запланировать регулярные затраты.
Вы также можете просмотреть метрики для приложения, которые помогут вам профилирование работы приложения. Эти счетчики полезны в рабочей среде и разработке. Вы можете просмотреть ЦП, память, сеть и использование файловой системы и настроить оповещения, когда счетчик достигает определенного порогового значения. Выставление счетов за метрики определяется уровнем плана службы приложений.
Включение ведения журнала с помощью портала Azure
На портале управление ведением журналов приложений осуществляется в панели "Журналы диагностики" веб-приложения.
Чтобы включить ведение журнала приложения в файловой системе веб-приложения, задайте для параметра Ведение журнала приложения (файловая система) значение Вкл. и выберите уровень: "Ошибка", "Предупреждение", "Информация" или "Подробно". Ведение журнала в файловой системе автоматически сбрасывается в "Отключено " через 12 часов.
Чтобы включить ведение журнала приложений в контейнер хранилища BLOB-объектов, задайте для журнала приложений (BLOB-объект) значение "Вкл.", а затем выберите учетную запись хранения и контейнер. Учетная запись хранения и веб-приложение должны быть созданы в одном регионе Azure. Затем выберите уровень: ошибка, предупреждение, информация или подробно.
Примечание.
Сохранение в хранилище больших двоичных объектов недоступно для журналов приложений Linux.
При записи в хранилище BLOB-объектов необходимо также задать период хранения. В отличие от журналов файловой системы, журналы BLOB-объектов никогда не удаляются по умолчанию. Параметр периода хранения означает, что все журналы старше указанного количества дней удаляются.
После настройки журналов нажмите кнопку Сохранить.
Включение ведения журнала с помощью Azure CLI
Чтобы включить ведение журнала приложения в файловой системе, используйте следующую команду.
az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>
Например, чтобы включить ведение журнала в файловой системе для приложения с именем contosofashions123 для сбора всех сообщений, используйте следующую команду.
az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG
В настоящее время нет способа отключить ведение журнала приложений с помощью команд Azure CLI. Однако следующая команда сбрасывает ведение журнала файловой системы только на уровень ошибок.
az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>
Чтобы просмотреть текущее состояние ведения журнала для приложения, используйте следующую команду.
az webapp log show --name <app-name> --resource-group <resource-group-name>