Povolení a konfigurace protokolování aplikace App Service

Dokončeno

V této lekci se podíváme na to, jak může protokolování aplikace pomoct s vašimi webovými aplikacemi, a ukážeme vám, jak tyto protokoly povolit.

Co jsou protokoly aplikací?

Azure poskytuje integrovanou diagnostiku s protokolováním aplikací. Protokoly aplikací jsou výstupem trasovacích příkazů v kódu aplikace. Příkazy se provádějí za běhu aplikace. Můžete například chtít zkontrolovat určitou logiku v kódu přidáním trasování, které se zobrazí při zpracování konkrétní funkce. Nebo můžete chtít zobrazit pouze zaprotokolovanou zprávu, když došlo k určité úrovni chyby. Protokolování aplikací je primárně určené pro aplikace v předprodukčním prostředí a problémy s problémy, protože nadměrné protokoly můžou mít přístup k výkonu a rychle spotřebovávat úložiště. z tohoto důvodu je protokolování do systému souborů automaticky zakázáno po 12 hodinách.

Protokolování aplikace má omezení škálování, a to především proto, že soubory se používají k ukládání protokolovaného výstupu. Pokud máte více instancí aplikace a stejné úložiště se sdílí napříč všemi instancemi, můžou se zprávy z různých instancí prokládání prokládáním, což ztěžuje řešení potíží. Pokud má každá instance vlastní soubor protokolu, existuje více protokolů, což ztěžuje řešení potíží specifických pro jednotlivé instance.

Typy protokolování dostupné prostřednictvím služby Azure App Service závisejí na architektuře kódu aplikace a na tom, jestli aplikace běží na hostiteli s Windows nebo Linuxem.

ASP.NET

Aplikace ASP.NET běží jen na aplikačních službách Windows. K protokolování informací do diagnostického protokolu aplikace použijte třídu System.Diagnostics.Trace. Můžete použít čtyři úrovně trasování, které korelují s úrovněmi error, warninginformationa verbose protokolování zobrazené na webu Azure Portal:

  • Trace.TraceError("Zpráva"); // Zapíše chybovou zprávu.
  • Trace.TraceWarning("Zpráva"); // Zapíše upozorňující zprávu.
  • Trace.TraceInformation("Zpráva"); // Zapíše informativní zprávu.
  • Trace.WriteLine("Zpráva"); // Zapíše podrobnou zprávu.

Aplikace ASP.NET Core

Aplikace ASP.NET Core mohou běžet ve Windows nebo v Linuxu. K protokolování informací do aplikačních protokolů Azure použijte třídu logger factory a dále některou ze šesti úrovní protokolování:

  • logger.LogCritical("Zpráva"); // Zapíše kritickou zprávu na úrovni protokolu 5.
  • logger.LogError("Zpráva"); // Zapíše chybovou zprávu na úrovni protokolu 4.
  • logger.LogWarning("Zpráva"); // Zapíše upozorňující zprávu na úrovni protokolu 3.
  • logger.LogInformation("Zpráva"); // Zapíše informativní zprávu na úrovni protokolu 2.
  • logger.LogDebug("Zpráva"); // Zapíše ladicí zprávu na úrovni protokolu 1.
  • logger.LogTrace("Zpráva"); // Zapíše podrobnou trasovací zprávu na úrovni protokolu 0.

U aplikací ASP.NET Core ve Windows souvisejí tyto zprávy s filtry na webu Azure Portal takto:

  • Úrovně 4 a 5 jsou chybové zprávy.
  • Úroveň 3 je zpráva upozornění .
  • Úroveň 2 je informační zpráva.
  • Úrovně 0 a 1 jsou podrobné zprávy.

V případě aplikací ASP.NET Core v Linuxu se protokolují pouze chybové zprávy (úrovně 4 a 5).

Aplikace Node.js

U skriptových webových aplikací, jako jsou aplikace Node.js ve Windows nebo Linuxu, se k povolení protokolování aplikace používá metoda console():

  • console.error("Zpráva"); // Zapíše zprávu do stDERR.
  • console.log("Zpráva"); // Zapíše zprávu do stDOUT.

Oba typy zpráv se zapisují do protokolů na úrovni chyb služby Azure App Service.

Rozdíly v protokolování u hostitelů s Windows a Linuxem

Ke směrování zpráv do souborů protokolů používají webové aplikace Azure webový server (proces IIS). Protože webové aplikace založené na Windows patří mezi dobře zavedené služby Azure a zasílání zpráv pro aplikace ASP.NET je úzce integrované s podkladovou službou IIS, těží aplikace pro Windows z plnohodnotné infrastruktury protokolování. U jiných aplikací jsou možnosti protokolování omezené vývojovou platformou, i když běží ve službě App Service pro Windows.

Image Dockeru používaná pro kontejner aplikace určuje funkce protokolování dostupné pro skriptované aplikace založené na Linuxu, jako je Node. Základní protokolování, jako je použití přesměrování na STDERR nebo STDOUT, používá protokoly Dockeru. Bohatší funkce protokolování závisí na podkladové imagi a na tom, jestli používá PHP, Perl, Ruby atd. Ke stažení protokolování webové aplikace srovnatelného s tím, co poskytuje služba IIS pro aplikace Windows, se může vyžadovat připojení ke kontejneru pomocí SSH.

Následující tabulka shrnuje podporu protokolování pro běžná prostředí aplikací a pro hostitele.

Prostředí aplikace Hostitelský počítač Úrovně protokolování Místo uložení
ASP.NET Okna Chybová, upozorňující, informativní, podrobná Systém souborů, úložiště objektů blob
ASP.NET Core Okna Chybová, upozorňující, informativní, podrobná Systém souborů, úložiště objektů blob
ASP.NET Core Linux Chyba Systém souborů
Node.js Okna Chybová (STDERR), informativní (STDOUT), upozorňující, podrobná Systém souborů, úložiště objektů blob
Node.js Linux Chyba Systém souborů
Java Linux Chyba Systém souborů

Alternativní způsob diagnostiky aplikací

Aplikace Azure Přehledy je rozšíření webu, které poskytuje více funkcí monitorování výkonu, jako jsou podrobná data o využití a výkonu. Je navržená pro nasazení produkčních aplikací a je potenciálně užitečným vývojovým nástrojem. Application Insights funguje s celou řadou prostředí pro vývoj aplikací a poskytuje stejnou sadu podrobných dat o telemetrii a výkonu, ať už jde o aplikace ASP.NET nebo Node. Abyste ale mohli Application Insights využívat, musíte do aplikace začlenit pomocí sady App Insights SDK specifický kód. Přehledy aplikace je také fakturovatelná služba. Takže v závislosti na rozsahu nasazení a shromážděných dat aplikací možná budete muset naplánovat pravidelné náklady.

Můžete si také zobrazit metriky pro vaši aplikaci, což vám může pomoct profilovat, jak aplikace funguje. tyto čítače jsou užitečné v produkčním a vývojovém prostředí. Můžete zobrazit využití procesoru, paměti, sítě a systému souborů a nastavit výstrahy, když nějaký čítač dosáhne určité prahové hodnoty. Fakturace za metriky je součástí úrovně plánu aplikační služby.

Povolení protokolování pomocí webu Azure Portal

Na portálu se protokolování aplikace spravuje v podokně Diagnostické protokoly dané webové aplikace.

Screenshot of Diagnostics logs pane in the Azure portal.

Pokud chcete povolit protokolování aplikace do systému souborů webové aplikace, nastavte Protokolování aplikace (systém souborů) na Zapnuto a Úroveň nastavte na Chyba, Upozornění, Informace nebo Podrobné. Protokolování do systému souborů se po 12 hodinách automaticky resetuje na Vypnuto .

Pokud chcete povolit protokolování aplikace do kontejneru úložiště objektů blob, nastavte protokolování aplikace (Blob) na Zapnuto a pak vyberte účet úložiště a kontejner. Účet úložiště a webová aplikace se musí vytvořit ve stejné oblasti Azure. Úroveň pak nastavte na Chyba, Upozornění, Informace nebo Podrobné.

Poznámka:

Do úložiště objektů blob se nedají ukládat protokoly linuxových aplikací.

Při protokolování do úložiště objektů blob musíte nastavit také hodnotu Doba uchování. Na rozdíl od protokolů systému souborů se ve výchozím nastavení nikdy neodstraní protokoly objektů blob. Možnost doby uchovávání znamená, že se odstraní všechny protokoly starší než zadaný počet dnů.

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

Po nakonfigurování protokolů vyberte Uložit.

Povolení protokolování pomocí Azure CLI

Protokolování aplikace do systému souborů povolíte spuštěním tohoto příkazu.

az webapp log config --application-logging filesystem --level verbose --name <app-name> --resource-group <resource-group-name>

Pokud například chcete povolit protokolování do systému souborů u aplikace s názvem contosofashions123 a zaznamenat všechny zprávy, spusťte tento příkaz.

az webapp log config --application-logging filesystem --level verbose --name contosofashions123 --resource-group contosofashionsRG

V současné době neexistuje způsob, jak zakázat protokolování aplikace pomocí příkazů Azure CLI. Následující příkaz však resetuje protokolování systému souborů pouze na úrovni chyb.

az webapp log config --application-logging off --name <app-name> --resource-group <resource-group-name>

K zobrazení aktuálního stavu protokolování aplikace použijte tento příkaz.

az webapp log show --name <app-name> --resource-group <resource-group-name>

Prověřte si své znalosti

1.

Jaké typy webových aplikací mohou ukládat protokoly do služby Azure Blob Storage?

2.

Proč se protokolování systému souborů automaticky vypne po 12 hodinách?