Включение и настройка ведения журнала приложений в службе приложений

Завершено

В этом уроке мы рассмотрим, как ведение журнала приложений может помочь в веб-приложениях и покажем, как включить эти журналы.

Что представляют собой журналы приложений?

Azure предоставляет встроенные средства диагностики для ведения журналов приложений. Журналы приложений — это выходные данные инструкций трассировки среды выполнения в коде приложения. Например, может потребоваться проверка некоторую логику в коде, добавив трассировку для отображения при обработке определенной функции. Кроме того, может потребоваться просмотреть сообщение, зарегистрированное только при возникновении определенного уровня ошибки. Ведение журнала приложений в основном предназначено для приложений в предварительной версии и для проблемных проблем, так как чрезмерные журналы могут нести удар по производительности и быстро использовать хранилище. По этой причине ведение журнала в файловой системе автоматически отключено через 12 часов.

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

Типы ведения журнала, доступные через службу приложений Azure, зависят от платформы кода приложения и от того, выполняется ли приложение на узле Windows или Linux.

ASP.NET

Приложения ASP.NET могут выполняться только в службах приложений Windows. Для записи информации в журнал диагностики приложения используется класс System.Diagnostics.Trace. Вы можете использовать четыре уровня трассировки, которые сопоставляются с errorwarninginformationуровнями ведения журнала, а 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). Поскольку веб-приложения на базе 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 Аналитика — это расширение сайта, которое обеспечивает больше возможностей мониторинга производительности, таких как подробные данные об использовании и производительности. Он предназначен для развертывания рабочих приложений и является потенциально полезным средством разработки. Application Insights работает с самыми разными средами разработки приложений, предоставляя одинаковый набор широких возможностей телеметрии и данных о производительности для приложений ASP.NET или Node. Тем не менее для использования Application Insights вам необходимо включать код в приложение с помощью пакета SDK App Insights. Приложение Аналитика также является оплачиваемой службой. Таким образом, в зависимости от масштаба развертывания и собранных данных приложения может потребоваться запланировать регулярные затраты.

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

Включение ведения журнала с помощью портала Azure

На портале управление ведением журналов приложений осуществляется в панели "Журналы диагностики" веб-приложения.

Screenshot of Diagnostics logs pane in the Azure portal.

Чтобы включить ведение журнала приложения в файловой системе веб-приложения, задайте для параметра Ведение журнала приложения (файловая система) значение Вкл. и выберите уровень: "Ошибка", "Предупреждение", "Информация" или "Подробно". Ведение журнала в файловой системе автоматически сбрасывается в "Отключено " через 12 часов.

Чтобы включить ведение журнала приложений в контейнер хранилища BLOB-объектов, задайте для журнала приложений (BLOB-объект) значение "Вкл.", а затем выберите учетную запись хранения и контейнер. Учетная запись хранения и веб-приложение должны быть созданы в одном регионе Azure. Затем выберите уровень: ошибка, предупреждение, информация или подробно.

Примечание.

Сохранение в хранилище больших двоичных объектов недоступно для журналов приложений Linux.

При записи в хранилище BLOB-объектов необходимо также задать период хранения. В отличие от журналов файловой системы, журналы BLOB-объектов никогда не удаляются по умолчанию. Параметр периода хранения означает, что все журналы старше указанного количества дней удаляются.

Screenshot of configuring application logs in the Azure portal with Save highlighted.

После настройки журналов нажмите кнопку Сохранить.

Включение ведения журнала с помощью 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>

Проверьте свои знания

1.

Какие типы веб-приложений могут сохранять журналы в хранилище BLOB-объектов Azure?

2.

Почему ведение журналов файловой системы автоматически выключается через 12 часов?