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 info
di 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:
- Log4j2 (solo versione 2.*)
- Logback
- jboss-logging
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 | Sì | Sì | Sì | Sì | Sì | Sì | Sì | Sì |
Logback | Sì | No | Sì | Sì | Sì | Sì | Sì | Sì |
jboss-logging | No | Sì | Sì | Sì | Sì | Sì | Sì | No |
Piattaforma | Sì | No | Sì | Sì | Sì | Sì | Sì | No |
Visibilità generale dei livelli di log
Livello di registrazione | FATALE | ERROR | AVVERTIRE | INFO | DEBUG | TRACE | ALL |
---|---|---|---|---|---|---|---|
OFF | |||||||
FATALE | Sì | ||||||
ERROR | Sì | Sì | |||||
AVVERTIRE | Sì | Sì | Sì | ||||
INFORMAZIONI | Sì | Sì | Sì | Sì | |||
DEBUG | Sì | Sì | Sì | Sì | Sì | ||
TRACE | Sì | Sì | Sì | Sì | Sì | Sì | |
ALL | Sì | Sì | Sì | Sì | Sì | Sì | Sì |
Ad esempio, se si imposta il livello di log su DEBUG
, l'app stampa i log con livello FATAL
, ERROR
WARN
, INFO
, DEBUG
e non stampa i log con il livello TRACE
AND ALL
.