Définir le niveau d’enregistreur d’événements dynamique pour résoudre les problèmes des applications Java dans Azure Container Apps (préversion)
La plateforme Azure Container Apps offre un outil de diagnostic intégré qui est exclusivement réservé aux développeurs Java afin de les aider à déboguer et dépanner leurs applications Java exécutées sur Azure Container Apps plus facilement et plus efficacement. L’une des fonctionnalités clés est un changement de niveau d’enregistreur d’événements dynamique, qui vous permet d’accéder aux détails du journal qui sont masqués par défaut. Lorsqu’elles sont activées, les informations du journal sont collectées sans modification de code ou vous obligent à redémarrer votre application lors du changement des niveaux du journal.
Avant de commencer, vous devez mettre à niveau l’extension Azure Container Apps dans votre interface Azure CLI vers la version 0.3.51 ou ultérieure.
az extension update --name containerapp
Activer les diagnostics JVM pour vos applications Java
Avant d’utiliser l’outil de diagnostic Java, vous devez d’abord activer les diagnostics JVM (Java Virtual Machine) pour Azure Container Apps. Cette étape active les fonctionnalités de diagnostic Java en injectant un agent de diagnostic avancé dans votre application. Il est probable que votre application redémarre pendant ce processus.
Pour tirer parti de ces outils de diagnostic, vous pouvez créer une application conteneur en activant ces outils ou mettre à jour une application conteneur existante.
Pour créer une application conteneur avec les diagnostics JVM activés, utilisez la commande suivante :
az containerapp create --enable-java-agent \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Pour mettre à jour une application conteneur existante, utilisez la commande suivante :
az containerapp update --enable-java-agent \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Changer les niveaux d’enregistreur d’événements d’exécution
Après avoir activé les diagnostics JVM, vous pouvez changer les niveaux de journal d’exécution pour des enregistreurs d’événements spécifiques dans votre application Java en cours d’exécution sans avoir à la redémarrer.
L’exemple suivant utilise le nom de l’enregistreur d’événements org.springframework.boot
avec le niveau de journal info
. Veillez à changer ces valeurs pour qu’elles correspondent au nom et au niveau de votre propre enregistreur d’événements.
Utilisez la commande suivante pour ajuster les niveaux de journal pour un enregistreur d’événements spécifique :
az containerapp java logger set \
--logger-name "org.springframework.boot" \
--logger-level "info"
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Jusqu’à deux minutes peuvent être nécessaires pour que ce changement de niveau d’enregistreur d’événements soit prise en compte. Une fois l’opération terminée, vous pouvez consulter les journaux des applications dans les flux de journaux ou d’autres options de journal.
Frameworks de journalisation Java pris en charge
Les frameworks de journalisation Java suivants sont pris en charge :
- Log4j2 (version 2.* uniquement)
- Logback
- jboss-logging
Niveaux de journal pris en charge par différents frameworks de journalisation
Différents framework de journalisation prennent en charge différents niveaux de journalisation. Dans la plateforme de diagnostics JVM, certains frameworks sont mieux pris en charge que d’autres. Avant de modifier les niveaux de journalisation, assurez-vous que le framework et la plateforme prennent en charge les niveaux de journalisation que vous utilisez.
Infrastructure | OFF | FATAL | ERROR | WARN | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | Oui | Oui | Oui | Oui | Oui | Oui | Oui |
Logback | Oui | No | Oui | Oui | Oui | Oui | Oui |
jboss-logging | Non | Oui | Oui | Oui | Oui | Oui | Oui |
Plateforme | Oui | No | Oui | Oui | Oui | Oui | Oui |
Visibilité générale des niveaux de journal
Niveau du journal | FATAL | ERROR | WARN | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|
OFF | ||||||
FATAL | Oui | |||||
ERROR | Oui | Oui | ||||
WARN | Oui | Oui | Oui | |||
INFO | Oui | Oui | Oui | Oui | ||
DEBUG | Oui | Oui | Oui | Oui | Oui | |
TRACE | Oui | Oui | Oui | Oui | Oui | Oui |
Par exemple, si vous définissez le niveau de journal sur INFO
, votre application imprime les journaux avec le niveau FATAL
, ERROR
, WARN
, INFO
, et n'imprime PAS les journaux avec le niveau DEBUG
et TRACE
.