Cómo usar Logback para escribir registros en el almacenamiento persistente personalizado
Nota:
Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.
Este artículo se aplica a:✅ Java ❎ C#
Este artículo se aplica a:✅ Básico/Estándar ✅ Enterprise
En este artículo se muestra cómo cargar Logback y escribir registros en el almacenamiento persistente personalizado de Azure Spring Apps.
Nota:
Cuando un archivo de la ruta de clase de la aplicación tiene uno de los siguientes nombres, Spring Boot lo cargará automáticamente en la configuración predeterminada para Logback:
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
Requisitos previos
- Un recurso de almacenamiento existente enlazado a una instancia de Azure Spring Apps. Si necesita enlazar un recurso de almacenamiento, consulte Habilitación del almacenamiento persistente en Azure Spring Apps.
- La dependencia de Logback incluida en la aplicación. Para obtener más información sobre Logback, vea A Guide To Logback (Guía de Logback).
- Extensión de Azure Spring Apps para la CLI de Azure
Edición de la configuración de Logback para escribir registros en una ruta de acceso específica
Puede establecer la ruta de acceso donde se escribirán los registros utilizando el archivo de ejemplo logback-spring.xml.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<!-- please feel free to customize the log layout -->
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 'LOGS' here is a value to be read from the application's environment variable -->
<file>${LOGS}/spring-boot-logger.log</file>
<!-- please feel free to customize the log layout pattern -->
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- LOG everything at the INFO level -->
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<!-- LOG "com.baeldung*" at the TRACE level -->
<logger name="com.baeldung" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
</configuration>
En el ejemplo anterior, hay dos marcadores de posición denominados {LOGS}
en la ruta de acceso para escribir los registros de la aplicación. Se debe asignar un valor a la variable de entorno LOGS
para que el registro escriba tanto en la consola como en el almacenamiento persistente.
Uso de la CLI de Azure para crear e implementar una nueva aplicación con Logback en el almacenamiento persistente
Use el siguiente comando para crear una aplicación en Azure Spring Apps con el almacenamiento persistente habilitado y la variable de entorno definida:
az spring app create \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --persistent-storage <path-to-json-file> \ --env LOGS=/byos/logs
Nota:
El valor de la variable de entorno
LOGS
puede sermountPath
, o un subdirectorio del mismo.Este es un ejemplo del archivo JSON pasado al parámetro
--persistent-storage
en el comando create. En este ejemplo, el mismo valor se pasa a la variable de entorno en el comando de la CLI anterior y en la propiedadmountPath
siguiente:{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
Use el siguiente comando para implementar la aplicación:
az spring app deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --artifact-path <path-to-jar-file>
Use el siguiente comando para comprobar el registro de consola de la aplicación:
az spring app logs \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name>
Vaya al recurso Azure Storage Account que ha enlazado y busque el recurso compartido de archivos de Azure que se ha adjuntado como almacenamiento persistente. En este ejemplo, los registros se escribirán en el archivo spring-boot-logger.log, en la raíz del recurso compartido de archivos de Azure. Todos los archivos de registro rotados se almacenarán en la carpeta /archived del recurso compartido de archivos de Azure.
Opcionalmente, use el siguiente comando para actualizar la ruta de acceso o el almacenamiento persistente de una aplicación existente:
La ruta de acceso o el almacenamiento persistente en que se guardan los registros se pueden cambiar en cualquier momento. La aplicación se reiniciará cuando se realicen cambios en las variables de entorno o en el almacenamiento persistente.
az spring app update \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --persistent-storage <path-to-new-json-file> \ --env LOGS=<new-path>