Aktivera och konfigurera App Service-programloggning

Slutförd

I den här lektionen tittar vi på hur apploggning kan hjälpa dig med dina webbappar och visar hur du aktiverar apploggar.

Vad är programloggar?

Azure tillhandahåller inbyggd diagnostik med apploggning. Programloggar är utdata från körningsspårningsinstruktioner i programkod. Du kanske till exempel vill kontrollera viss logik i koden genom att lägga till en spårning för att visa när en viss funktion bearbetas. Eller så kanske du bara vill se ett loggat meddelande när en viss felnivå inträffar. Apploggning är främst för appar i förproduktion och för besvärliga problem, eftersom överdrivna loggar kan ge prestanda och snabbt förbruka lagring. Därför inaktiveras loggning till filsystemet automatiskt efter 12 timmar.

Apploggning har skalningsbegränsningar, främst på grund av att filer används för att spara loggade utdata. Om du har flera instanser av en app och samma lagring delas mellan alla instanser kan meddelanden från olika instanser interfolieras, vilket gör felsökningen svår. Om varje instans har en egen loggfil finns det flera loggar, vilket återigen gör det svårt att felsöka instansspecifika problem.

Vilka typer av loggning som är tillgängliga via Azure App Service beror på appens kodramverk, och om appen körs på en Windows- eller Linux-appvärd.

ASP.NET

ASP.NET-appar kan bara köras på Windows-apptjänster. Använd klassen System.Diagnostics.Trace för att logga information till programdiagnostikloggen. Det finns fyra spårningsnivåer som du kan använda, som korrelerar med loggningsnivåerna error, warning, informationoch verbose som visas i Azure Portal:

  • Trace.TraceError("Message"); // Skriver ett felmeddelande
  • Trace.TraceWarning("Message"); // Skriver ett varningsmeddelande
  • Trace.TraceInformation("Message"); // Skriver ett informationsmeddelande
  • Trace.WriteLine("Message"); // Skriver ett utförligt meddelande

ASP.NET Core-appar

ASP.NET Core-appar kan köras på Windows eller Linux. Om du vill logga information till Azure-programloggar ska du använda klassen logger factory och sedan använda någon av sex loggnivåer:

  • logger.LogCritical("Message"); // Skriver ett kritiskt meddelande på loggnivå 5
  • logger.LogError("Message"); // Skriver ett felmeddelande på loggnivå 4
  • logger.LogWarning("Message"); // Skriver ett varningsmeddelande på loggnivå 3
  • logger.LogInformation("Message"); // Skriver ett informationsmeddelande på loggnivå 2
  • logger.LogDebug("Message"); // Skriver ett felsökningsmeddelande på loggnivå 1
  • logger.LogTrace("Message"); // Skriver ett detaljerat spårningsmeddelande på loggnivå 0

För ASP.NET Core-appar på Windows rör dessa meddelanden filtren i Azure-portalen på följande sätt:

  • Nivå 4 och 5 är felmeddelanden .
  • Nivå 3 är ett varningsmeddelande .
  • Nivå 2 är ett informationsmeddelande .
  • Nivåerna 0 och 1 är utförliga meddelanden.

För ASP.NET Core-appar i Linux loggas endast felmeddelanden (nivå 4 och 5).

Node.js-appar

För skriptbaserade webbappar, till exempel Node.js-appar på Windows eller Linux, aktiveras programloggning med hjälp av metoden console():

  • console.error("Message"); Skriver ett meddelande till STDERR.
  • console.log("Message"); Skriver ett meddelande till STDOUT.

Båda typerna av meddelanden skrivs till felnivåloggarna för Azure App Service.

Loggningsskillnader mellan Windows- och Linux-värdar

Om du vill dirigera meddelanden till loggfiler använder Azure Web Apps webbservern Internet Information Services (IIS). Eftersom Windows-baserade webbappar är en välkänd Azure-tjänst och meddelanden för ASP.NET-appar är nära integrerade med den underliggande IIS-tjänsten drar Windows-appar fördel av en omfattande loggningsinfrastruktur. För andra appar begränsas loggningsalternativen av utvecklingsplattformen, även när de körs i en Windows-apptjänst.

Docker-avbildningen som används för appens container avgör vilka loggningsfunktioner som är tillgängliga för Linux-baserade skriptappar, till exempel Node. Grundläggande loggning, till exempel att använda omdirigeringar till STDERR eller STDOUT, använder Docker-loggarna. Mer omfattande loggningsfunktioner är beroende av den underliggande avbildningen och om den kör PHP, Perl, Ruby och så vidare. Om du vill ladda ned motsvarande webbprogramloggning enligt IIS för Windows-appar kan du behöva ansluta till containern med hjälp av SSH.

I följande tabell sammanfattas loggningsstödet för vanliga appmiljöer och -värdar.

Appmiljö Host Loggnivåer Lagringsplats
ASP.NET Windows Fel, varning, information, utförlig Filsystem, Blob Storage
ASP.NET Core Windows Fel, varning, information, utförlig Filsystem, Blob Storage
ASP.NET Core Linux Fel Filsystem
Node.js Windows Fel (STDERR), information (STDOUT), varning, utförlig Filsystem, Blob Storage
Node.js Linux Fel Filsystem
Java Linux Fel Filsystem

Alternativ till programdiagnostik

Azure Application Insights är ett webbplatstillägg som tillhandahåller fler funktioner för prestandaövervakning, till exempel detaljerad användning och prestandadata. Application Insights är utformat för distribution av produktionsappar och är ett potentiellt användbart utvecklingsverktyg. Den fungerar med en rad olika apputvecklingsmiljöer och tillhandahåller samma uppsättning omfattande telemetri- och prestandadata oavsett om appen är ASP.NET eller Node. Men om du vill använda Application Insights måste du ta med specifik kod i appen, med hjälp av App Insights-SDK:n. Application Insights är också en fakturerbar tjänst. Beroende på omfattningen av dina appdistributioner och insamlade data kan du därför behöva planera för regelbundna kostnader.

Du kan också visa mått för din app, vilket kan hjälpa dig att profilera hur appen fungerar. Dessa räknare är användbara i produktion och utveckling. Du kan visa användning av processor, minne, nätverk och filsystem, och ställa in aviseringar när en räknare når ett visst tröskelvärde. Fakturering för mått omfattas av App Service-plannivån.

Aktivera loggning med hjälp av Azure-portalen

På portalen hanteras programloggning från fönstret Diagnostikloggar för webbappen.

Skärmbild av fönstret Diagnostikloggar på Azure-portalen.

Du aktiverar programloggning till webbappens filsystem genom att ställa in Programloggning (filsystem) och sedan ställa in Nivå på Fel, Varning, Information eller Utförlig. Loggning till filsystemet återställs automatiskt till Av efter 12 timmar.

Om du vill aktivera apploggning till en bloblagringscontainer anger du Programloggning (Blob) till och väljer sedan ett lagringskonto och en container. Lagringskontot och webbappen måste skapas i samma Azure-region. Sedan ställer du in Nivå på Fel, Varning, Information eller Utförlig.

Kommentar

Att spara till bloblagring är inte tillgängligt för Linux-programloggar.

När du loggar till bloblagring måste du också ange en kvarhållningsperiod. Till skillnad från filsystemloggarna tas blobloggar aldrig bort som standard. Alternativet kvarhållningsperiod innebär att alla loggar som är äldre än det angivna antalet dagar tas bort.

Skärmbild av hur du konfigurerar programloggar i Azure Portal med Spara markerat.

När du har konfigurerat loggarna klickar du på Spara.

Aktivera loggning med hjälp av Azure CLI

Om du vill aktivera programloggning till filsystemet kör du det här kommandot.

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

Om du exempelvis vill aktivera loggning till filsystemet för en app med namnet contosofashions123, och samla in alla meddelanden, kör du det här kommandot.

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

Det finns för närvarande inget sätt att inaktivera programloggning med hjälp av Azure CLI-kommandon. Följande kommando återställer dock filsystemloggning till endast felnivå.

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

Om du vill visa aktuell loggningsstatus för en app använder du det här kommandot.

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

Kontrollera dina kunskaper

1.

Vilka typer av webbappar kan spara loggar till Azure Blob Storage?

2.

Varför inaktiveras filsystemloggning automatiskt efter 12 timmar?