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:
- Log4j2 (nur Version 2.*)
- Logback
- jboss-logging
Unterstützte Protokollebenen durch verschiedene Protokollierungsframeworks
Verschiedene Protokollierungsframeworks unterstützen unterschiedliche Protokollebenen. In der JVM-Diagnoseplattform werden einige Frameworks besser unterstützt als andere. Stellen Sie vor dem Ändern der Protokollierungsebenen sicher, dass die verwendeten Protokollebenen sowohl vom Framework als auch von der Plattform unterstützt werden.
Framework | OFF | FATAL | FEHLER | WARN | INFO | DEBUG | TRACE | ALL |
---|---|---|---|---|---|---|---|---|
Log4j2 | Ja | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Logback | Ja | Keine | Ja | Ja | Ja | Ja | Ja | Ja |
jboss-logging | No | Ja | Ja | Ja | Ja | Ja | Ja | No |
Plattform | Ja | Keine | Ja | Ja | Ja | Ja | Ja | No |
Allgemeine Sichtbarkeit von Protokollebenen
Protokoll-Ebene | FATAL | FEHLER | WARN | INFO | DEBUG | TRACE | ALL |
---|---|---|---|---|---|---|---|
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 | |
ALL | Ja | Ja | Ja | Ja | Ja | Ja | Ja |
Wenn Sie z. B. die Protokollebene auf DEBUG
festlegen, werden Ihre App-Protokolle der Ebenen FATAL
, ERROR
, WARN
, INFO
und DEBUG
ausgegeben, aber NICHT die Protokolle der Ebenen TRACE
UND ALL
.