Compartilhar via


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:

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 os níveis de log que você está usando são compatíveis com a estrutura e a plataforma.

Estrutura OFF FATAL ERROR AVISO INFO DEBUG TRACE ALL
Log4j2 Sim Sim Sim Sim Sim Sim Sim Yes
Logback Sim Não Sim Sim Sim Sim Sim Yes
jboss-logging Não Sim Sim Sim Sim Sim Sim Não
Plataforma Sim Não Sim Sim Sim Sim Sim Não

Visibilidade geral dos níveis de log

Nível de log FATAL ERROR AVISO INFO DEBUG TRACE ALL
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 Yes
ALL Sim Sim Sim Sim Sim Sim Yes

Por exemplo, se você definir o nível de log como DEBUG, o seu aplicativo imprimirá logs com nível FATAL, ERROR, WARN, INFO e DEBUG e NÃO imprimirá logs com nível TRACE E ALL.