Deployment aplikací na Azure App Services je velmi snadný. Někdy však vše nejde přesně podle plánů a můžeme skončit se smutnou (a nepříliš čitelnou) chybou 502 či 503. Pokud se tyto problémy vyskytnou během startu aplikace, není jednoduché je odladit, protože chybu nemůže aplikace v tu dobu zobrazit sama. Server tedy pak jen zobrazí obecnou chybovou stránku, která k řešení problému není příliš nápomocná. Naštěstí Azure nabízí nástroj, který pomůže právě v těchto situacích - Diagnostic logging (diagnostické logování).
Dva typy diagnostického logování
Azure App Service nabízí dva typy diagnostického logování:
- Application Diagnostics - zaznamenávají logy aplikace včetně logů ze
System.Diagnostics.Trace
- Web Server Diagnostics - poskytují detailní logování chyb, trasování neúspěšných requestů a logy webového serveru
Povolení diagnostického logování
Diagnostic logging lze snadno povolit v Azure Portalu. Otevřete svou Azure App Service a vyberte v Settings panelu položku Diagnostics logs. V okně Logs najdete několik přepínačů, které vám umožní povolit různé funkce diagnostického logování.
První dva přepínače Application Logging nabízí logování do souborového systému (filesystem) a do Azure Storage Blobs. Výstup je v obou případech stejný, takže záleží na vás, který je pro vás vhodnější. Můžete si také vybrat úroveň logovacích zpráv, které se budou zapisovat. Dejte však pozor, že logování do souborového systému je pouze dočasné a po 12 hodinách se automaticky vypne. Logování web serveru povoluje druhý typ diagnostického logování. Zda musíte opět vybrat cílovou lokaci, ale můžete vybrat buď Azure Storage nebo File system, logování nemůže být zapnuto pro obě lokace zároveň. Nakonec můžete také povolit logování detailních chybových zpráv (detailed error messages ) and neúspěšných requestů (railed requests tracing) pomocí stejnojmenných přepínačů dole.
Přístup k logům v souborovém systému
Pro přístup k logům v souborovém systému můžete použít FTP údaje pod přepínači na stránce Logs. Všimněte si však, že zde chybí heslo. Pro něj si musíme zajít na stránku Overview vaší App Service a kliknout na tlačítko Get publish profile v horním menu.
Tím se stáhne soubor .PublishSettings
, který je ve skutečnosti jednoduchý XML soubor. Vyhledejte v něm tag <PublishProfile>
s atributem publishMethod="FTP"
. Ve stejném profilu pak najdete atribut userPWD
, což je vaše heslo pro připojení k FTP. Můžete použít kterýkoliv FTP klient jako je například FileZilla. Logy jsou uloženy strukturovaně ve složce LogFiles
. Každý typ logů má svoji vlastní podsložku. Naúspěšné requesty jsou ve složce začínající na W3SVC
, logy webového serveru ve složce http/RawLogs
. Nakonec jsou zde také logy vzniklé interními deployment procesy které využívá App Service a Git - najdete je ve složce Git
.
Přístup k logům v Azure Storage Blobs
Způsob uložení logů v Azure Storage je analogické, jako v případě souborového systému, ale pro pohodlnější přístup doporučuji stáhnout aplikaci Azure Storage Explorer, která zobrazuje obsah Azure Storage ve formátu podobném prohlížeči souborů.
Log Stream
Jakmile povolíte Application logs nebo Web server logs, dostanete navíc další možnost přístupu k logům takřka v reálném čase. V panelu Settings vaší aplikace najdete položku Log stream hned pod Diagnostics logs. Zobrazí se vám konzolové uživatelské rozhraní kde můžete přepnout mezi Application a Web server logy a sledovat události okamžitě ve chvíli, kdy se vyskytnou. To je především praktické při ladění spouštění aplikace a neúspěšných requestů.
Shrnutí
Diagnostics logs jsou velmi užitečnou funkcí Azure App Service. Nabízí širokou škálu nástrojů a různých typů logování, díky čemuž se dostanete přesně k těm informacím, které potřebujete pro diagnostiku jakékoliv chyby. Z vlastní zkušenosti mohu potvrdit, že pro nalezení chyby často je nutné použít informace z několika různých typů logů. Například pro problémy při startu ASP.NET Core aplikace vám Log stream nejspíše nabídne obecnější informaci o tom, kdy k chybě dochází ale díky detailním logům pak dokážete přesně určit zdroj chyby.