Stavíme RESTová API v ASP.NET Core za 3 900 Kč

Jak na logování v Azure App Service

V posledních měsících jsem se hodně věnoval diagnostice webových aplikací s využitím služby Application Insights. Co když ale Application Insights z nějakého důvodu nepoužíváte a přesto potřebujete zalogovat důležitou informaci během vykonávání kódu? Jak získat přehled o selháních HTTP požadavků? Se službou Azure App Service má vývojář k dispozici jednoduché ale velmi mocné diagnostické služby, které v tomto článku krátce popíši.

Miroslav Holec

Miroslav Holec

software architect

24. července. 2016 , aktualizace 24. července. 2016

Přehled diagnostických služeb

V Azure App Service lze snadno aktivovat logování událostí a získat dokonalý přehled o tom, co se ve vaší aplikaci právě děje.

Web Server Diagnostics

Web Server Diagnostics poskytuje tři odlišné typy logů:

Application Diagnostics

Zatímco Web Server Diagnostics logy se sbírají na základě zpracování HTTP požadavků, Application Diagnostics log se generuje na základě samotného kódu. V ASP.NET aplikacích může vývojář použít

System.Diagnostics.Trace.TraceError("Trase message here")

pro trasování.

Deployment Logs

Speciálním typem logů jsou deployment logy, které služba App Service generuje během publikování aplikace. Pro tyto logy není potřeba nic nastavovat (vše se děje automaticky). Využít deployment logy lze nejčastěji při nasazování aplikací pomocí PowerShell scriptů.

Povolení diagnostických služeb v Azure

V prostředí Azure lze najít povolení diagnostických služeb na jediném místě v sekci Settings > Diagnostics Log u vybrané služby App Service. K dispozici je několik možností:

Diagnostics Logs v Azure App Service

Společně s Application Logs lze nastavit i úroveň logů. Pokud je nastavena například na Error, pak se logují pouze Trace.TraceError (zatímco Trace.TraceInformation a Trace.TraceWarning jsou ignorovány).

Na rozdíl od změn prováděných ve web.config změna nastavení diagnostiky v Azure nerecykluje aplikační doménu. Samotné nastavení ve web.configu vůbec není potřeba.

Přístup k logům

Logy ve službě Azure App Service jsou dostupné přes FTP, lze je stáhnout jako ZIP pomocí Azure PowerShellu nebo Azure CLI. Struktura adresářů je následující:

Nástroj Azure Diagnostics Log Stream

Velmi zajímavý nástroj je Log Stream, který sbírá Application Logs a Web Server Logs a zobrazuje je v reálném čase přímo v portálu Azure. Nalézt jej lze v sekci: Tools > Log Stream ve službě App Service.

Na obrázku výše si můžete všimnout, že zapnutím funkce Detailed error messages se v konzoli zobrazí chybová stránka přesně tak, jako uživateli.

Další diagnostické nástroje v App Service

Vedle zmíněných nástrojů pro logování Azure App Service poskytuje několik dalších nástrojů, které slouží především k pohledu na celkový stav aplikace. Tyto nástroje jsou dostupné v bohaté sekci Settings > Support and Troubleshooting.

Support and troubleshooting tools

Requests VS. Deployments

FREB logs

DaaS

KUDU

Posledním (neméně zajímavým) místem, kde lze získat přehled o stavu aplikace, zkontrolovat aktuální konfiguraci prostředí nebo například debugovat aplikaci pomocí konzole (CMD / Powershell) je KUDU. KUDU je dostupné pro aplikace nasazené v Azure App Service pod URL:

http(s)://{nazev aplikace}.scm.azurewebsites.net

Podrobná dokumentace ke KUDU je dostupná ve Wiki

Závěr

Spuštění diagnostických služeb v Azure App Service je otázkou několika kliknutí a nabízí detailní pohled na dění ve vaší aplikaci. I když Vám dnes funguje vše správně, doporučuji logování spustit, protože v případě nenadálých potíží se jedná o první místo, kde lze zjistit příčinu chyb. Application Logs jsou nejsnazší cestou jak trasovat chování webových aplikací nebo například Web Jobů nasazených ve formě konzolové aplikace ve službe Azure App Service.

Zeptejte se