Freigeben über


Festlegen der dynamischen Loggerebene zur Problembehandlung von Java-Anwendungen in Azure-Container-Apps (Vorschau)

Die Azure Container Apps-Plattform bietet ein integriertes Diagnosetool exklusiv für Java-Entwickler, um ihnen dabei zu helfen, ihre auf Azure Container Apps ausgeführten Java-Anwendungen einfacher und effizienter zu debuggen und Fehler zu beheben. Eines der wichtigsten Features ist eine Änderung der dynamischen Loggerebene, mit der Sie standardmäßig auf Protokolldetails zugreifen können, die standardmäßig ausgeblendet sind. Wenn diese Option aktiviert ist, werden Protokollinformationen erfasst, ohne dass Codeänderungen erforderlich sind oder Sie gezwungen werden, Ihre App neu zu starten, wenn Sie die Protokollebene ändern.

Bevor Sie beginnen, müssen Sie die Azure-Container-Apps-Erweiterung in Ihrer Azure CLI überprüfen:

az extension show --name containerapp

Wenn die Erweiterung nicht installiert ist, installieren Sie sie zuerst. Wenn die Azure Container Apps-Erweiterung installiert ist, sollte sie Version 0.3.51 oder höher sein.

az extension add -n containerapp

Hinweis

Dieses Feature ist kompatibel mit Anwendungen, die unter Java 8 oder neueren Versionen ausgeführt werden.

Aktivieren der JVM-Diagnose für Ihre Java-Anwendungen

Bevor Sie das Java-Diagnosetool verwenden, müssen Sie zuerst die Java Virtual Machine (JVM)-Diagnose für Ihre Azure-Container-Apps aktivieren. Dieser Schritt ermöglicht die Java-Diagnosefunktionalität, indem ein erweiterter Diagnose-Agent in Ihre App eingefügt wird. Ihre App kann während dieses Prozesses neu gestartet werden.

Um diese Diagnosetools nutzen zu können, können Sie eine neue Container-App mit aktiviertem Container erstellen oder eine vorhandene Container-App aktualisieren.

Verwenden Sie den folgenden Befehl, um eine neue Container-App mit aktivierter JVM-Diagnose zu erstellen:

az containerapp create --enable-java-agent \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME>

Verwenden Sie den folgenden Befehl, um eine vorhandene Container-App zu aktualisieren:

az containerapp update --enable-java-agent \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME>

Ändern der Laufzeitprotokollierebenen

Nach dem Aktivieren der JVM-Diagnose können Sie Laufzeitprotokollebenen für bestimmte Logger in Ihrer ausgeführten Java-App ändern, ohne die Anwendung neu starten zu müssen.

Im folgenden Beispiel wird der Loggername org.springframework.boot mit der Protokollebene info verwendet. Achten Sie darauf, diese Werte so zu ändern, dass sie Ihrem eigenen Loggernamen und -level entsprechen.

Verwenden Sie den folgenden Befehl, um Protokollebenen für einen bestimmten Logger anzupassen:

az containerapp java logger set \
  --logger-name "org.springframework.boot" \
  --logger-level "info" \
  --resource-group <RESOURCE_GROUP> \
  --name <CONTAINER_APP_NAME>

Es kann bis zu zwei Minuten dauern, bis die Änderung auf Loggerebene wirksam wird. Nach Abschluss können Sie die Anwendungsprotokolle aus Protokolldatenströmen oder anderen Protokolloptionenüberprüfen.

Unterstützte Java-Protokollierungsframeworks

Die folgenden Java-Protokollierungsframeworks werden unterstützt:

Unterstützte Protokollebenen durch verschiedene Protokollierungsframeworks

Verschiedene Protokollierungsframeworks unterstützen unterschiedliche Protokollebenen. In der JVM-Diagnoseplattform werden einige Frameworks besser unterstützt als andere. Bevor Sie die Protokollierungsebenen ändern, stellen Sie sicher, dass das Framework und die Plattform die von Ihnen verwendeten Protokollierungsebenen unterstützen.

Rahmenwerk AUS TÖDLICH FEHLER WARNUNG INFORMATIONEN DEBUGGEN SPUR
Log4j2 Ja Ja Ja Ja Ja Ja Ja
Abmelden Ja Nein Ja Ja Ja Ja Ja
jboss-logging Nein Ja Ja Ja Ja Ja Ja
Plattform Ja Nein Ja Ja Ja Ja Ja

Allgemeine Sichtbarkeit von Protokollebenen

Protokoll-Ebene TÖDLICH FEHLER WARNUNG INFORMATIONEN DEBUGGEN SPUR
AUS
TÖDLICH Ja
Ja Ja
WARNEN Ja Ja Ja
INFORMATIONEN Ja Ja Ja Ja
DEBUGGEN Ja Ja Ja Ja Ja
SPUR Ja Ja Ja Ja Ja Ja

Wenn Sie beispielsweise die Protokollebene auf „INFO“ festlegen, gibt Ihre App Protokolle mit der Ebene FATAL, ERROR, WARN, INFO aus und NICHT Protokolle mit den Ebenen DEBUG und TRACE.