Condividi tramite


Impostare il livello di logger dinamico per risolvere i problemi delle applicazioni Java in App Contenitore di Azure (anteprima)

La piattaforma App Azure Container offre uno strumento di diagnostica predefinito esclusivamente per gli sviluppatori Java per facilitare il debug e la risoluzione dei problemi delle applicazioni Java in esecuzione in App Azure Container in modo più semplice ed efficiente. Una delle funzionalità principali è una modifica dinamica del livello del logger, che consente di accedere ai dettagli del log nascosti per impostazione predefinita. Se abilitata, le informazioni di log vengono raccolte senza modifiche al codice o forzando il riavvio dell'app quando si modificano i livelli di log.

Prima di iniziare, è necessario aggiornare l'estensione App Azure Container nell'interfaccia della riga di comando di Azure alla versione 0.3.51 o successiva.

az extension update --name containerapp

Abilitare la diagnostica JVM per le applicazioni Java

Prima di usare lo strumento di diagnostica Java, è necessario abilitare la diagnostica di Java Virtual Machine (JVM) per le app azure Container. Questo passaggio abilita la funzionalità di diagnostica Java inserendo un agente di diagnostica avanzato nell'app. L'app potrebbe essere riavviata durante questo processo.

Per sfruttare questi strumenti di diagnostica, è possibile creare una nuova app contenitore con loro abilitata o aggiornare un'app contenitore esistente.

Per creare una nuova app contenitore con la diagnostica JVM abilitata, usare il comando seguente:

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

Per aggiornare un'app contenitore esistente, usare il comando seguente:

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

Modificare i livelli del logger di runtime

Dopo aver abilitato la diagnostica JVM, è possibile modificare i livelli di log di runtime per logger specifici nell'app Java in esecuzione senza dover riavviare l'applicazione.

Nell'esempio seguente viene usato il nome org.springframework.boot del logger con il livello infodi log . Assicurarsi di modificare questi valori in modo che corrispondano al nome e al livello del logger.

Usare il comando seguente per regolare i livelli di log per un logger specifico:

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

La modifica del livello del logger può richiedere fino a due minuti. Al termine, è possibile controllare i log applicazioni dai flussi di log o da altre opzioni di log.

Framework di registrazione Java supportati

Sono supportati i framework di registrazione Java seguenti:

Livelli di log supportati da framework di registrazione diversi

Diversi framework di registrazione supportano livelli di log diversi. Nella piattaforma di diagnostica JVM alcuni framework sono supportati meglio di altri. Prima di modificare i livelli di registrazione, assicurarsi che i livelli di log usati siano supportati sia dal framework che dalla piattaforma.

Framework OFF FATALE ERROR AVVERTIRE INFO DEBUG TRACE ALL
Log4j2
Logback No
jboss-logging No No
Piattaforma No No

Visibilità generale dei livelli di log

Livello di registrazione FATALE ERROR AVVERTIRE INFO DEBUG TRACE ALL
OFF
FATALE
ERROR
AVVERTIRE
INFORMAZIONI
DEBUG
TRACE
ALL

Ad esempio, se si imposta il livello di log su DEBUG, l'app stampa i log con livello FATAL, ERRORWARN, INFO, DEBUG e non stampa i log con il livello TRACE AND ALL.