Compartir vía


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

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

  1. 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 ser mountPath, 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 propiedad mountPath siguiente:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. 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>
    
  3. 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.

  4. 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>
    

Pasos siguientes