Partage via


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 :

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 changer les niveaux de journalisation, vérifiez que ceux que vous utilisez sont pris en charge par le framework et la plateforme.

Infrastructure OFF FATAL ERROR WARN INFO DEBUG TRACE ALL
Log4j2 Oui Oui Oui Oui Oui Oui Oui Oui
Logback Oui No Oui Oui Oui Oui Oui Oui
jboss-logging Non Oui Oui Oui Oui Oui Oui Non
Plateforme Oui No Oui Oui Oui Oui Oui Non

Visibilité générale des niveaux de journal

Niveau du journal FATAL ERROR WARN INFO DEBUG TRACE ALL
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
ALL Oui Oui Oui Oui Oui Oui Oui

Par exemple, si vous définissez le niveau de journal sur DEBUG, votre application va afficher les journaux avec le niveau FATAL, ERROR, WARN, INFO et DEBUG, et ne va PAS afficher les journaux avec le niveau TRACE ET ALL.