Povolení a konfigurace protokolování aplikace App Service
V této lekci uvidíte, jak může být protokolování vašich webových aplikací užitečné a jak tyto protokoly povolit.
Co jsou protokoly 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 chtít například zkontrolovat určitou logiku v kódu přidáním trasování, které ukáže, kdy se zpracovává konkrétní funkce, nebo jen zobrazit zaznamenanou zprávu, když dojde k chybě na konkrétní úrovni. Protokolování aplikace se používá především u aplikací v předprodukční fázi a k řešení problémů, protože nadměrné protokolování ovlivňuje výkon a rychle spotřebovává úložiště. Proto se protokolování do systému souborů po 12 hodinách automaticky zakáže.
Protokolování aplikace má omezení škálování, především proto, že se k ukládání výstupu protokolu používají soubory. Pokud máte několik instancí aplikace a všechny instance sdílejí stejné úložiště, mohou být zprávy z různých instancí promíchané, což znesnadňuje řešení problémů. Pokud má každá instance svůj vlastní soubor protokolu, bude existovat více protokolů, což opět znesnadňuje řešení problémů specifických pro instanci.
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 protokolování , , a zobrazenými v error warning information verbose 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 představují chybové zprávy.
- Úroveň 3 představuj upozornění.
- Úroveň 2 představuje zprávu informativního charakteru.
- Úrovně 0 a 1 představují podrobné zprávy.
U aplikací ASP.NET Core v Linuxu se protokolují jen „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ů chybové úrovně aplikační služby Azure.
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í mohou být možnosti protokolování omezené vývojovou platformou, přestože se provozují na aplikační službě Windows.
Funkčnost protokolování dostupná pro linuxové skriptové aplikace, jako je Node, je určena imagí Dockeru použitou pro kontejner aplikace. Základní protokolování využívající přesměrování na STDERR nebo STDOUT, používá protokoly Dockeru. Rozsáhlejší funkčnost protokolování závisí na podkladové imagi, například na tom, jestli využí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 | Hostitel | Úrovně protokolování | Místo uložení |
|---|---|---|---|
| ASP.NET | Windows | Chybová, upozorňující, informativní, podrobná | Systém souborů, úložiště objektů blob |
| ASP.NET Core | Windows | Chybová, upozorňující, informativní, podrobná | Systém souborů, úložiště objektů blob |
| ASP.NET Core | Linux | Chybová | Systém souborů |
| Node.js | Windows | Chybová (STDERR), informativní (STDOUT), upozorňující, podrobná | Systém souborů, úložiště objektů blob |
| Node.js | Linux | Chybová | Systém souborů |
| Java | Linux | Chybová | Systém souborů |
Alternativní způsob diagnostiky aplikací
Azure Application Insights je rozšíření webu poskytující další funkce pro monitorování výkonu, například podrobná data o využití a výkonu, které je určené pro nasazení produkčních aplikací a které se dá také používat jako potenciálně užitečný vývojový nástroj. 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. Application Insights je také fakturovaná služba, takže v závislosti na rozsahu nasazení aplikací a shromažďovaných dat musíte počítat s pravidelnými náklady.
Můžete si také prohlédnout metriky aplikace, které vám pomohou zjistit, jak aplikace funguje. Tyto čítače oceníte v produkčním prostředí, stejně jako při vývoji. 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.

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 znovu nastaví na Vypnuto.
Pokud chcete povolit protokolování aplikace do kontejneru objektů blob, nastavte Protokolování aplikace (blob) na Zapnuto a potom vyberte účet úložiště a kontejner. Účet úložiště a webová aplikace musí být vytvořeny 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ů v systému souborů se protokoly v objektech blob standardně nikdy neodstraňují; možnost Doba uchování znamená, že všechny protokoly starší než zadaný počet dnů budou odstraněny.

Po nakonfigurování protokolů vyberte Uložit.
Povolení protokolování pomocí Azure CLI
V aktuální verzi Azure CLI nemůžete spravovat protokolování aplikace do úložiště objektů blob. Protokolování aplikace do systému souborů povolíte spuštěním tohoto příkazu.
az webapp log config --application-logging true --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 true --level verbose --name contosofashions123 --resource-group contosofashionsRG
Momentálně neexistuje žádný způsob, jak protokolování aplikace zakázat pomocí příkazů Azure CLI; následující příkaz ale obnoví protokolování do systému souborů jen na úroveň chyb.
az webapp log config --application-logging false --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>
Kontrola znalostí
Potřebujete pomoc? Projděte si našeho průvodce odstraňováním potíží nebo nahlaste potíže a uveďte konkrétní připomínky.