Establecimiento del nivel de registrador dinámico para solucionar problemas de aplicaciones Java en Azure Container Apps (versión preliminar)
La plataforma Azure Container Apps ofrece una herramienta de diagnóstico integrada exclusivamente para los desarrolladores de Java para ayudarles a depurar y solucionar problemas de sus aplicaciones Java que se ejecutan en Azure Container Apps de forma más fácil y eficaz. Una de las características clave es un cambio de nivel de registrador dinámico, que permite acceder a los detalles del registro ocultos de manera predeterminada. Cuando está habilitada, la información de registro se recopila sin modificaciones de código ni le obliga a reiniciar la aplicación al cambiar los niveles de registro.
Antes de empezar, debe actualizar la extensión de Azure Container Apps en la CLI de Azure a la versión 0.3.51 u otra más reciente.
az extension update --name containerapp
Nota:
Esta característica es compatible con aplicaciones que se ejecutan en Java 8 o versiones más recientes.
Habilitación de diagnósticos de JVM para las aplicaciones Java
Antes de usar la herramienta de diagnóstico de Java, primero debe habilitar los diagnósticos de máquina virtual Java (JVM) para Azure Container Apps. Este paso habilita la funcionalidad de diagnóstico de Java insertando un agente de diagnóstico avanzado en la aplicación. Es posible que la aplicación se reinicie durante este proceso.
Para aprovechar estas herramientas de diagnóstico, puede crear una nueva aplicación de contenedor con ellas habilitada o actualizar una aplicación de contenedor existente.
Para crear una nueva aplicación de contenedor con diagnósticos de JVM habilitado, use el siguiente comando:
az containerapp create --enable-java-agent \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Para actualizar una aplicación de contenedor existente, use el siguiente comando:
az containerapp update --enable-java-agent \
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
Cambio de los niveles del registrador en tiempo de ejecución
Después de habilitar el diagnóstico de JVM, puede cambiar los niveles de registro en tiempo de ejecución para registradores específicos en la aplicación Java en ejecución sin necesidad de reiniciar la aplicación.
En el ejemplo siguiente se usa el nombre del registrador org.springframework.boot
con el nivel de registro info
. Asegúrese de cambiar estos valores para que coincidan con su propio nombre y nivel del registrador.
Use el siguiente comando para ajustar los niveles de registro de un registrador específico:
az containerapp java logger set \
--logger-name "org.springframework.boot" \
--logger-level "info"
--resource-group <RESOURCE_GROUP> \
--name <CONTAINER_APP_NAME>
El cambio de nivel del registrador puede tardar hasta dos minutos en surtir efecto. Una vez completado, puede comprobar los registros de la aplicación desde secuencias de registro u otras opciones de registro.
Marcos de registro de Java admitidos
Se admiten los siguientes marcos de registro de Java:
- Log4j2 (solo versión 2.*)
- Logback
- jboss-logging
Niveles de registro admitidos por diferentes marcos de registro
Los distintos marcos de registro admiten diferentes niveles de registro. En la plataforma de diagnóstico de JVM, algunos marcos son mejor compatibles que otros. Antes de cambiar los niveles de registro, asegúrese de que el marco y la plataforma admiten los niveles de registro que está usando.
marco | Apagado | FATAL | ERROR | WARN | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|---|
Log4j2 | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Logback | Sí | No | Sí | Sí | Sí | Sí | Sí |
jboss-logging | No | Sí | Sí | Sí | Sí | Sí | Sí |
Plataforma | Sí | No | Sí | Sí | Sí | Sí | Sí |
Visibilidad general de los niveles de registro
Nivel de registro | FATAL | ERROR | WARN | INFO | DEBUG | TRACE |
---|---|---|---|---|---|---|
OFF | ||||||
FATAL | Sí | |||||
ERROR | Sí | Sí | ||||
WARN | Sí | Sí | Sí | |||
INFO | Sí | Sí | Sí | Sí | ||
DEBUG | Sí | Sí | Sí | Sí | Sí | |
TRACE | Sí | Sí | Sí | Sí | Sí | Sí |
Por ejemplo, si establece el nivel de registro en INFO
, la aplicación imprime registros con el nivel FATAL
, ERROR
, WARN
, INFO
y NO imprime registros con el nivel DEBUG
y TRACE
.