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 auf Version 0.3.51 oder höher aktualisieren.

az extension update --name containerapp

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.

Framework OFF FATAL FEHLER WARN INFO DEBUG TRACE
Log4j2 Ja Ja Ja Ja Ja Ja Ja
Logback Ja Keine Ja Ja Ja Ja Ja
jboss-logging No Ja Ja Ja Ja Ja Ja
Plattform Ja Keine Ja Ja Ja Ja Ja

Allgemeine Sichtbarkeit von Protokollebenen

Protokoll-Ebene FATAL FEHLER WARN INFO DEBUG TRACE
OFF
FATAL Ja
ERROR Ja Ja
WARN Ja Ja Ja
INFO Ja Ja Ja Ja
DEBUG Ja Ja Ja Ja Ja
TRACE 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.