Definir o nível do agente dinâmico para solucionar problemas de aplicativos Java nos Aplicativos de Contêiner do Azure (versão prévia)
A plataforma aplicativos de contêiner do Azure oferece uma ferramenta de diagnóstico interna exclusivamente 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 dinâmica no nível do agente, que permite acessar detalhes de log ocultos por padrão. Quando habilitadas, 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 Aplicativos de Contêiner do Azure na sua CLI do Azure para a versão 0.3.51 ou superior.
az extension update --name containerapp
Habilitar o diagnóstico de JVM para seus aplicativos Java
Antes de usar a ferramenta de diagnóstico java, primeiro você precisa habilitar o diagnóstico de JVM (Máquina Virtual Java) para seus Aplicativos de Contêiner do Azure. Esta etapa habilita a funcionalidade de diagnóstico do 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 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 agente de runtime
Depois de habilitar o diagnóstico de JVM, você pode alterar os níveis de log de runtime para agentes específicos em seu aplicativo Java em execução sem a necessidade de reiniciar seu aplicativo.
O exemplo a seguir usa o nome do agente org.springframework.boot
com o nível de log info
. Altere esses valores para corresponder ao seu próprio nome e nível de agente.
Use o seguinte comando para ajustar os níveis de log para um agente 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 no nível do agente entre em vigor. Após a conclusão, você pode verificar os logs de aplicativos em log streams ou em outras opções de registro.
Estruturas de log do Java com suporte
Há suporte para as seguintes estruturas de log do Java:
- Log4j2 (somente a versão 2.*)
- Logback
- jboss-logging
Níveis de log com suporte por diferentes estruturas de log
Estruturas de log diferentes dão suporte a diferentes níveis de log. Na plataforma de diagnóstico JVM, algumas estruturas têm melhor suporte do que outras. Antes de alterar os níveis de log, verifique se a estrutura e a plataforma dão suporte aos níveis de log que você está usando.
Estrutura | OFF | FATAL | ERROR | AVISO | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | Sim | Sim | Sim | Sim | Sim | Sim | Yes |
Logback | Sim | Não | Sim | Sim | Sim | Sim | Yes |
jboss-logging | Não | Sim | Sim | Sim | Sim | Sim | Sim |
Plataforma | Sim | Não | Sim | Sim | Sim | Sim | Sim |
Visibilidade geral dos níveis de log
Nível de log | FATAL | ERROR | AVISO | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|
OFF | ||||||
FATAL | Yes | |||||
ERROR | Sim | Yes | ||||
AVISO | Sim | Sim | Yes | |||
INFORMAÇÕES | Sim | Sim | Sim | Yes | ||
DEBUG | Sim | Sim | Sim | Sim | Yes | |
TRACE | 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
.