Guide pratique pour utiliser Logback afin d’écrire des journaux dans un stockage persistant personnalisé

Remarque

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique à : ✔️ Java ❌ C#

Cet article s’applique à : ✔️ De base/Standard ✔️ Entreprise

Cet article explique comment charger Logback et écrire des journaux dans un stockage persistant personnalisé dans Azure Spring Apps.

Remarque

Quand un fichier dans le classpath de l’application a l’un des noms suivants, Spring Boot le charge automatiquement sur la configuration par défaut pour Logback :

  • logback-spring.xml
  • logback.xml
  • logback-spring.groovy
  • logback.groovy

Prérequis

Modifier la configuration Logback pour écrire des journaux dans un chemin spécifique

Vous pouvez définir le chemin où les journaux doivent être écrits à l’aide de l’exemple de fichier 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>

Dans l’exemple précédent, il existe deux espaces réservés nommés {LOGS} dans le chemin pour l’écriture des journaux de l’application. Une valeur doit être attribuée à la variable d’environnement LOGS pour que le journal soit écrit à la fois sur la console et sur votre stockage persistant.

Utilisez Azure CLI pour créer et déployer une application avec Logback sur un stockage persistant

  1. Utilisez la commande suivante pour créer une application dans Azure Spring Apps avec le stockage persistant activé et la variable d’environnement définie :

    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
    

    Remarque

    La valeur de la variable d’environnement LOGS peut être celle du mountPath, ou d’un sous-répertoire de celui-ci.

    Voici un exemple de fichier JSON qui est transmis au paramètre --persistent-storage dans la commande create. Dans cet exemple, la même valeur est transmise pour la variable d’environnement dans la commande CLI ci-dessus et dans la propriété mountPath ci-dessous :

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Utilisez la commande suivante pour déployer votre application :

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. Utilisez la commande suivante pour vérifier le journal de la console de votre application :

    az spring app logs \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name>
    

    Accédez à la ressource de compte Stockage Azure que vous avez liée et recherchez le partage de fichiers Azure qui était attaché en tant que stockage persistant. Dans cet exemple, les journaux sont écrits dans le fichier spring-boot-logger.log à la racine de votre partage de fichiers Azure. Tous les fichiers journaux ayant subi une rotation sont stockés dans le dossier /archived de votre partage de fichiers Azure.

  4. Si vous le souhaitez, utilisez la commande suivante pour mettre à jour le chemin d’accès ou le stockage persistant d’une application existante :

    Le chemin d’accès ou le stockage persistant dans lequel les journaux sont enregistrés peuvent être modifiés à tout moment. L’application redémarre lorsque des modifications sont apportées à des variables d’environnement ou à un stockage persistant.

    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>
    

Étapes suivantes