Aktivieren der Diagnoseprotokollierung für Apps in Azure App Service

Übersicht

Azure bietet integrierte Diagnosefunktionen zur Unterstützung beim Debuggen einer App Service-App. In diesem Artikel erfahren Sie, wie Sie die Diagnoseprotokollierung aktivieren und Ihrer Anwendung Instrumentierung hinzufügen und wie Sie die von Azure protokollierten Informationen abrufen.

In diesem Artikel werden das Azure-Portal und die Azure-Befehlszeilenschnittstelle (Azure CLI) verwendet, um mit Diagnoseprotokollen zu arbeiten. Informationen zum Arbeiten mit Diagnoseprotokollen in Visual Studio finden Sie unter Problembehandlung von Azure in Visual Studio.

Hinweis

Zusätzlich zu den Protokollierungsanweisungen in diesem Artikel gibt es eine neue, integrierte Protokollierungsfunktion mit Azure Monitor. Weitere Informationen zu dieser Funktion finden Sie im Abschnitt Senden von Protokollen an Azure Monitor.

type Plattform Standort BESCHREIBUNG
Anwendungsprotokollierung Windows, Linux App Service-Dateisystem und/oder Azure Storage-Blobs Protokolliert Meldungen, die von Ihrem Anwendungscode generiert werden. Die Meldungen können durch das von Ihnen ausgewählte Webframework oder direkt aus Ihrem Anwendungscode mithilfe des Standardprotokollierungsmusters Ihrer Sprache generiert werden. Jede Meldung wird einer der folgenden Kategorien zugewiesen: Critical (Kritisch) , Error (Fehler) , Warning (Warnung) , Info (Information) , Debug (Debuggen) und Trace (Ablaufverfolgung) . Sie können auswählen, wie ausführlich die Protokollierung erfolgen soll, indem Sie den Schweregrad beim Aktivieren der Anwendungsprotokollierung festlegen.
Webserverprotokollierung Windows App Service-Dateisystem oder Azure Storage-Blobs Unformatierte HTTP-Anforderungsdaten im erweiterten W3C-Protokolldateiformat. Jede Protokollmeldung enthält Daten, etwa die HTTP-Methode, den Ressourcen-URI, die Client-IP, den Clientport, den Benutzer-Agent, den Antwortcode usw.
Detaillierte Fehlermeldungen Windows App Service-Dateisystem Kopien der HTM-Fehlerseiten, die an den Clientbrowser gesendet wurden. Aus Sicherheitsgründen sollten ausführliche Fehlerseiten nicht an Clients in der Produktionsumgebung gesendet werden, aber App Service kann die Fehlerseite bei jedem Auftreten eines Anwendungsfehlers speichern, der HTTP-Code 400 oder höher aufweist. Die Seite kann Informationen enthalten, mit deren Hilfe sich bestimmen lässt, warum der Server den Fehlercode zurückgegeben hat.
Ablaufverfolgung fehlgeschlagener Anforderungen Windows App Service-Dateisystem Detaillierte Ablaufverfolgungsinformationen zu fehlgeschlagenen Anforderungen, einschließlich der Ablaufverfolgung von IIS-Komponenten, die zur Verarbeitung der Anforderung verwendet wurden, sowie die in jeder Komponente benötigte Zeit. Dies ist hilfreich, wenn Sie die Leistung der Website verbessern oder einen bestimmten HTTP-Fehler isolieren möchten. Für jede fehlerhafte Anforderung, die die XML-Protokolldatei enthält, wird ein Ordner sowie das XSL-Stylesheet generiert, mit dem die Protokolldatei angezeigt werden kann.
Bereitstellungsprotokollierung Windows, Linux App Service-Dateisystem Protokolle zur Veröffentlichung von Inhalten für eine App. Bereitstellungsprotokollierung erfolgt automatisch, und es gibt keine konfigurierbaren Einstellungen für die Bereitstellungsprotokollierung. Sie unterstützt Sie bei der Ermittlung, warum eine Bereitstellung fehlgeschlagen ist. Wenn Sie beispielsweise ein benutzerdefiniertes Bereitstellungsskript verwenden, können Sie die Bereitstellungsprotokollierung nutzen, um festzustellen, warum das Skript fehlschlägt.

Hinweis

App Service bietet ein dediziertes, interaktives Diagnosetool, das Sie bei der Problembehandlung Ihrer Anwendung unterstützt. Weitere Informationen hierzu finden Sie unter Azure App Service-Pläne – Diagnoseübersicht.

Außerdem können Sie andere Azure-Dienste verwenden, um die Protokollierungs- und Überwachungsfunktionen Ihrer App zu verbessern, z.B. Azure Monitor.

Aktivieren der Anwendungsprotokollierung (Windows)

Um Anwendungsprotokollierung für Windows-Apps im Azure-Portal zu aktivieren, navigieren Sie zu Ihrer App und wählen App Service-Protokolle aus.

Wählen Sie für Anwendungsprotokollierung (Dateisystem) oder Anwendungsprotokollierung (Blob) oder beides die Option Ein aus.

Die Option Dateisystem ist für das temporäre Debuggen bestimmt und schaltet sich nach 12 Stunden aus. Die Option Blob ist für die langfristige Protokollierung vorgesehen und benötigt einen Blobspeichercontainer, in den Protokolle geschrieben werden. Die Option Blob enthält auch zusätzliche Informationen in den Protokollmeldungen, z.B. die ID der ursprünglichen VM-Instanz der Protokollmeldung (InstanceId), die Thread-ID (Tid) und einen genaueren Zeitstempel (EventTickCount).

Hinweis

Wenn Ihr Azure Storage-Konto durch Firewallregeln geschützt ist, finden Sie weitere Informationen unter Überlegungen zum Netzwerkbetrieb.

Hinweis

Zurzeit können nur .NET-Anwendungsprotokolle in den Blobspeicher geschrieben werden. Anwendungsprotokoll für Java, PHP, Node.js, Python können nur im App Service-Dateisystem gespeichert werden (ohne Codeänderungen, um Protokolle in externen Speicher zu schreiben).

Wenn Sie den Zugriffsschlüssel für Ihr Speicherkonto neu generieren, müssen Sie außerdem die jeweilige Protokollierungskonfiguration zur Verwendung der aktualisierten Zugriffsschlüssel zurücksetzen. Gehen Sie dazu folgendermaßen vor:

  1. Stellen Sie auf der Registerkarte Konfigurieren das jeweilige Protokollierungsfeature auf Aus. Speichern Sie die Einstellungen.
  2. Aktivieren Sie die Protokollierung im Speicherkontoblob erneut. Speichern Sie die Einstellungen.

Wählen Sie die Ebene oder die zu protokollierende Detailebene aus. Die folgende Tabelle zeigt die Protokollkategorien der einzelnen Ebenen:

Ebene Enthaltene Kategorien
Disabled Keine
Fehler Fehler, Kritisch
Warning Warnung, Fehler, Kritisch
Informationen Info, Warnung, Fehler, Kritisch
Ausführlich Ablaufverfolgung, Debugging, Info, Warnung, Fehler, Kritisch (alle Kategorien)

Wenn Sie fertig sind, wählen Sie Speichern aus.

Hinweis

Falls Sie Protokolle in Blobs schreiben, gilt die Aufbewahrungsrichtlinie nicht mehr, wenn Sie die App löschen, aber die Protokolle in den Blobs beibehalten. Weitere Informationen finden Sie unter Nach dem Löschen von Ressourcen möglicherweise anfallende Kosten.

Aktivieren der Anwendungsprotokollierung (Linux/Container)

Um Anwendungsprotokollierung für Linux-Apps oder benutzerdefinierte Container im Azure-Portal zu aktivieren, navigieren Sie zu Ihrer App und wählen App Service-Protokolle aus.

Wählen Sie unter Anwendungsprotokollierung die Option Dateisystem aus.

Geben Sie unter Kontingent (MB) das Datenträgerkontingent für die Anwendungsprotokolle an. Legen Sie unter Aufbewahrungszeitraum (Tage) die Anzahl der Tage fest, die die Protokolle aufbewahrt werden sollen.

Wenn Sie fertig sind, wählen Sie Speichern aus.

Aktivieren der Webserverprotokollierung

Um Webserverprotokollierung für Windows-Apps im Azure-Portal zu aktivieren, navigieren Sie zu Ihrer App und wählen App Service-Protokolle aus.

Wählen Sie Webserverprotokollierung aus, wählen Sie Speicher aus, um Protokolle im Blobspeicher zu speichern, oder Dateisystem, um Protokolle im App Service-Dateisystem zu speichern.

Hinweis

Wenn Ihr Azure Storage-Konto durch Firewallregeln geschützt ist, finden Sie weitere Informationen unter Überlegungen zum Netzwerkbetrieb.

Legen Sie unter Aufbewahrungszeitraum (Tage) die Anzahl der Tage fest, die die Protokolle aufbewahrt werden sollen.

Hinweis

Wenn Sie den Zugriffsschlüssel für Ihr Speicherkonto neu generieren, müssen Sie die jeweilige Protokollierungskonfiguration zur Verwendung der aktualisierten Schlüssel zurücksetzen. Gehen Sie dazu folgendermaßen vor:

  1. Stellen Sie auf der Registerkarte Konfigurieren das jeweilige Protokollierungsfeature auf Aus. Speichern Sie die Einstellungen.
  2. Aktivieren Sie die Protokollierung im Speicherkontoblob erneut. Speichern Sie die Einstellungen.

Wenn Sie fertig sind, wählen Sie Speichern aus.

Hinweis

Falls Sie Protokolle in Blobs schreiben, gilt die Aufbewahrungsrichtlinie nicht mehr, wenn Sie die App löschen, aber die Protokolle in den Blobs beibehalten. Weitere Informationen finden Sie unter Nach dem Löschen von Ressourcen möglicherweise anfallende Kosten.

Protokollieren ausführlicher Fehler

Um die Fehlerseite oder die Ablaufverfolgung fehlerhafter Anforderungen für Windows-Apps im Azure-Portal zu aktivieren, navigieren Sie zu Ihrer App und wählen App Service-Protokolle aus.

Wählen Sie Ausführliche Fehlerprotokollierung oderAblaufverfolgung fehlerhafter Anforderungen aus, wählen Sie Ein aus, und wählen Sie dann Speichern aus.

Beide Typen von Protokollen werden im App Service-Dateisystem gespeichert. Bis zu 50 Fehler (Dateien/Ordner) werden aufbewahrt. Sind mehr als 50 HTML-Dateien vorhanden, werden die ältesten Fehlerdateien automatisch gelöscht.

Von der Ablaufverfolgung für Anforderungsfehler wird standardmäßig ein Protokoll von Anforderungen erfasst, bei denen Fehler mit HTTP-Statuscodes zwischen 400 und 600 aufgetreten sind. Wenn Sie benutzerdefinierte Regeln angeben möchten, können Sie den Abschnitt <traceFailedRequests> in der Datei web.config überschreiben.

Hinzufügen von Protokollmeldungen im Code

In Ihrem Anwendungscode verwenden Sie die üblichen Protokollierungsfunktionen, um Protokollmeldungen an die Anwendungsprotokolle zu senden. Beispiel:

Streaming von Protokollen

Aktivieren Sie vor dem Streamen von Protokollen in Echtzeit den gewünschten Protokolltyp. Alle Informationen, die in Dateien mit der Erweiterung TXT, LOG oder HTM im Verzeichnis /LogFiles (D:/home/logfiles) gespeichert werden, werden von App Service gestreamt.

Hinweis

Einige Protokolltypen puffern die Schreibvorgänge in die Protokolldatei, was zu Störereignissen im Stream führen kann. Beispielsweise kann ein Anwendungsprotokolleintrag für den Besuch einer Seite im Stream vor dem zugehörigen HTTP-Protokolleintrag für die Seitenanforderung angezeigt werden.

Im Azure-Portal

Navigieren Sie zum Streamen von Protokollen im Azure-Portal zu Ihrer App, und wählen Sie Protokollstream aus.

In Cloud Shell

Verwenden Sie zum Livestreamen von Protokollen in Cloud Shell den folgenden Befehl:

Wichtig

Dieser Befehl funktioniert möglicherweise nicht mit Web-Apps, die in einem App Service-Plan für Linux gehostet werden.

az webapp log tail --name appname --resource-group myResourceGroup

Um bestimmte Protokolltypen wie HTTP zu filtern, verwenden Sie den Parameter --Provider. Beispiel:

az webapp log tail --name appname --resource-group myResourceGroup --provider http

In lokalem Terminal

Zum Streamen von Protokollen in der lokalen Konsole installieren Sie die Azure CLI, und melden Sie sich bei Ihrem Konto an. Nachdem Sie sich angemeldet haben, befolgen Sie die Anweisungen für Cloud Shell.

Zugreifen auf Protokolldateien

Wenn Sie die Option „Azure Storage-Blob“ für einen Protokolltyp konfigurieren, benötigen Sie ein Clienttool, das mit Azure Storage funktioniert. Weitere Informationen finden Sie unter Azure Storage-Clienttools.

Für Protokolle, die im App Service-Dateisystem gespeichert sind, ist die einfachste Möglichkeit, die ZIP-Datei im Browser unter der folgenden Adresse herunterzuladen:

  • Linux/ benutzerdefinierte Container: https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
  • Windows-Apps: https://<app-name>.scm.azurewebsites.net/api/dump

Bei Linux/ benutzerdefinierte Container enthält die ZIP-Datei Konsolenausgabe-Protokolle für den Docker-Host und den Docker-Container. Für eine horizontal hochskalierte App enthält die ZIP-Datei einen Satz von Protokollen für jede Instanz. Im App Service-Dateisystem sind diese Protokolldateien der Inhalt des Verzeichnisses /home/LogFiles.

Für Windows-Apps enthält die ZIP-Datei den Inhalt des Verzeichnisses D:\Home\LogFiles im App Service- Dateisystem. Sie hat folgende Struktur:

Protokolltyp Verzeichnis BESCHREIBUNG
Anwendungsprotokolle /LogFiles/Application/ Enthält mindestens eine Textdatei. Das Format der Protokollmeldungen hängt vom verwendeten Protokollierungsanbieter ab.
Ablaufverfolgung für Anforderungsfehler /LogFiles/W3SVC#########/ Enthält XML-Dateien und eine XSL-Datei. Sie können die formatierten XML-Dateien im Browser anzeigen.
Detaillierte Fehlerprotokolle /LogFiles/DetailedErrors/ Enthält HTM-Fehlerdateien. Sie können die HTM-Dateien im Browser anzeigen.
Eine andere Möglichkeit zum Anzeigen der Ablaufverfolgungen für Anforderungsfehler besteht darin, im Portal zur Seite Ihrer App zu navigieren. Wählen Sie im linken Menü Diagnose und Problembehandlung aus, und suchen Sie nach Ablaufverfolgungsprotokolle für Anforderungsfehler. Klicken Sie dann auf das Symbol, um die gewünschte Ablaufverfolgung zu durchsuchen und anzuzeigen.
Webserverprotokolle /LogFiles/http/RawLogs/ Enthält Textdateien im erweiterten W3C-Protokolldateiformat. Diese Informationen können in einem Text-Editor oder mit einem Hilfsprogramm wie Log Parser gelesen werden.
App Service unterstützt die Felder s-computername, s-ip oder cs-version nicht.
Bereitstellungsprotokolle /LogFiles/Git/ und /deployments/ Enthält Protokolle, die von den internen Bereitstellungsprozessen generiert werden, sowie Protokolle für Git-Bereitstellungen.

Senden von Protokollen an Azure Monitor

Mit der neuen Azure Monitor-Integration können Sie Diagnoseeinstellungen erstellen, um Protokolle an Speicherkonten, Event Hubs und Log Analytics zu senden.

Diagnostic Settings

Unterstützte Protokolltypen

In der folgenden Tabelle werden die unterstützten Protokolltypen und Beschreibungen dieser aufgeführt:

Protokolltyp Windows Windows-Container Linux Linux-Container BESCHREIBUNG
AppServiceConsoleLogs Java SE & Tomcat Ja Ja Ja Standardausgabe und Standardfehler
AppServiceHTTPLogs Ja Ja Ja Ja Webserverprotokolle
AppServiceEnvironmentPlatformLogs Ja Ja Ja App Service-Umgebung: Skalierung, Konfigurationsänderungen und Statusprotokolle
AppServiceAuditLogs Ja Ja Ja Ja Anmeldeaktivität per FTP und Kudu
AppServiceFileAuditLogs Ja Ja Wird noch angekündigt Wird noch angekündigt Dateiänderungen am Websiteinhalt; nur für Premium-Tarif und höher verfügbar
AppServiceAppLogs ASP.NET & Tomcat 1 ASP.NET & Tomcat 1 Java SE & Tomcat Blessed Images 2 Java SE & Tomcat Blessed Images 2 Anwendungsprotokolle
AppServiceIPSecAuditLogs Ja Ja Ja Ja Anforderungen von IP-Regeln
AppServicePlatformLogs Wird noch angekündigt Ja Ja Ja Containervorgangsprotokolle
AppServiceAntivirusScanAuditLogs 3 Ja Ja Ja Ja Protokolle von Antiviren-Scans mit Microsoft Defender für Cloud; nur verfügbar für Premium-Tier

1 Fügen Sie den App-Einstellungen für Tomcat-Apps TOMCAT_USE_STARTUP_BAT hinzu, und legen Sie den zugehörigen Wert auf false oder 0 fest. Sie müssen die neueste Tomcat-Version und java.util.logging verwenden.

2 Fügen Sie den App-Einstellungen für Java SE-Apps WEBSITE_AZMON_PREVIEW_ENABLED hinzu, und legen Sie den zugehörigen Wert auf true oder 1 fest.

3 Der Protokolltyp AppServiceAntivirusScanAuditLogs befindet sich derzeit in der Vorschauphase.

Überlegungen zum Netzwerkbetrieb

Wenn Sie Ihr Azure Storage-Konto schützen, indem Sie nur ausgewählte Netzwerke zulassen, kann es Protokolle von App Service nur empfangen, wenn beide folgenden Punkte zutreffen:

Weitere Schritte