Включение и настройка ведения журнала приложений в службе приложений
- 10 мин
В этом уроке мы рассмотрим, как ведение журнала приложений может помочь в веб-приложениях и покажем, как включить журналы приложений.
Что представляют собой журналы приложений?
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 Factory и выберите один из шести уровней ведения журнала.
- логгер.LogCritical("Message"); Записывает критическое сообщение с уровнем журнала 5
- логгер.LogError("Message"); // Записывает сообщение об ошибке на уровне логирования 4
- логгер.LogWarning("Message"); Записывает предупреждение на третьем уровне журнала
- логгер.LogInformation("Message"); // Записывает информационное сообщение на уровне логирования 2
- логгер.LogDebug("Message"); // Регистрирует сообщение отладки с уровнем журнала 1
- логгер.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 | Виндоус | Ошибка, предупреждение, информация, подробно | Файловая система, хранилище BLOB-объектов |
ASP.NET Core | Виндоус | Ошибка, предупреждение, информация, подробно | Файловая система, хранилище BLOB-объектов |
ASP.NET Core | Линукс | Ошибка | Файловая система |
Node.js | Виндоус | Ошибка (STDERR), информация (STDOUT), предупреждение, подробно | Файловая система, хранилище BLOB-объектов |
Node.js | Линукс | Ошибка | Файловая система |
Ява | Линукс | Ошибка | Файловая система |
Другие способы диагностики приложений
приложение 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>