Definir o nível do registrador dinâmico para solucionar problemas de aplicativos Java em Aplicativos de Contêiner do Azure (visualização)
A plataforma de Aplicativos de Contêiner do Azure oferece uma ferramenta de diagnóstico interna exclusiva para desenvolvedores Java para ajudá-los a depurar e solucionar problemas de seus aplicativos Java em execução nos Aplicativos de Contêiner do Azure com mais facilidade e eficiência. Um dos principais recursos é uma alteração de nível do registrador dinâmico, que permite acessar detalhes de log que estão ocultos por padrão. Quando habilitado, as informações de log são coletadas sem modificações de código ou forçando você a reiniciar seu aplicativo ao alterar os níveis de log.
Antes de começar, você precisa atualizar a extensão de Aplicativos de Contêiner do Azure em sua CLI do Azure para a versão 0.3.51 ou mais recente.
az extension update --name containerapp
Nota
Este recurso é compatível com aplicativos executados em Java 8 ou versões mais recentes.
Habilitar o diagnóstico da JVM para seus aplicativos Java
Antes de usar a ferramenta de diagnóstico Java, você precisa primeiro habilitar o diagnóstico da Java Virtual Machine (JVM) para seus Aplicativos de Contêiner do Azure. Esta etapa habilita a funcionalidade de diagnóstico Java injetando um agente de diagnóstico avançado em seu aplicativo. Seu aplicativo pode ser reiniciado durante esse processo.
Para aproveitar essas ferramentas de diagnóstico, você pode criar um novo aplicativo de contêiner com elas habilitadas ou atualizar um aplicativo de contêiner existente.
Para criar um novo aplicativo de contêiner com o diagnóstico da JVM habilitado, use o seguinte comando:
az containerapp create --enable-java-agent \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Para atualizar um aplicativo de contêiner existente, use o seguinte comando:
az containerapp update --enable-java-agent \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Alterar os níveis do registrador de tempo de execução
Depois de habilitar o diagnóstico da JVM, você pode alterar os níveis de log de tempo de execução para registradores específicos em seu aplicativo Java em execução sem a necessidade de reiniciar seu aplicativo.
O exemplo a seguir usa o nome org.springframework.boot
do registrador com o nível info
de log. Certifique-se de alterar esses valores para corresponder ao seu próprio nome e nível do registrador.
Use o seguinte comando para ajustar os níveis de log para um registrador específico:
az containerapp java logger set \
--logger-name "org.springframework.boot" \
--logger-level "info"
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Pode levar até dois minutos para que a alteração do nível do registrador entre em vigor. Depois de concluído, você pode verificar os logs do aplicativo a partir de fluxos de log ou outras opções de log.
Estruturas de log Java suportadas
As seguintes estruturas de log Java são suportadas:
- Log4j2 (apenas versão 2.*)
- Registo
- jboss-registro em log
Níveis de log suportados por diferentes estruturas de log
Diferentes estruturas de log suportam diferentes níveis de log. Na plataforma de diagnóstico da JVM, algumas estruturas são mais bem suportadas do que outras. Antes de alterar os níveis de log, verifique se a estrutura e a plataforma oferecem suporte aos níveis de log que você está usando.
Estrutura | OFF | FATAL | ERRO | ADVERTIR | INFORMAÇÃO | DEPURAR | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | Sim | Sim | Sim | Sim | Sim | Sim | Sim |
Registo | Sim | No | Sim | Sim | Sim | Sim | Sim |
jboss-logging | Não | Sim | Sim | Sim | Sim | Sim | Sim |
Plataforma | Sim | No | Sim | Sim | Sim | Sim | Sim |
Visibilidade geral dos níveis de log
Nível do registo | FATAL | ERRO | ADVERTIR | INFORMAÇÃO | DEPURAR | TRACE |
---|---|---|---|---|---|---|
DESLIGADO | ||||||
FATAL | Sim | |||||
ERRO | Sim | Sim | ||||
ADVERTIR | Sim | Sim | Sim | |||
INFORMAÇÃO | Sim | Sim | Sim | Sim | ||
DEPURAR | Sim | Sim | Sim | Sim | Sim | |
RASTREIO | Sim | Sim | Sim | Sim | Sim | Sim |
Por exemplo, se você definir o nível de log como INFO
, seu aplicativo imprimirá logs com o nível FATAL
, ERROR
, WARN
, INFO
e NÃO imprimirá logs com nível DEBUG
e TRACE
.