Condividi tramite


Come usare Logback per scrivere log in un archivio permanente personalizzato

Nota

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

Questo articolo si applica a: ✔️ Java ❌ C#

Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise

Questo articolo illustra come caricare logback e scrivere log in un archivio permanente personalizzato in Azure Spring Apps.

Nota

Quando un file nel classpath dell'applicazione ha uno dei nomi seguenti, Spring Boot lo caricherà automaticamente sulla configurazione predefinita per Logback:

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

Prerequisiti

  • Una risorsa di archiviazione esistente associata a un'istanza di Azure Spring Apps. Se è necessario associare una risorsa di archiviazione, vedere Come abilitare l'archiviazione permanente in Azure Spring Apps.
  • Dipendenza logback inclusa nell'applicazione. Per altre informazioni sul logback, vedere Guida al logback.
  • Estensione Azure Spring Apps per l'interfaccia della riga di comando di Azure

Modificare la configurazione logback per scrivere i log in un percorso specifico

È possibile impostare il percorso in cui verranno scritti i log usando il file di esempio 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>

Nell'esempio precedente sono presenti due segnaposto denominati {LOGS} nel percorso in cui scrivere i log dell'applicazione. È necessario assegnare un valore alla variabile LOGS di ambiente per fare in modo che il log scriva sia nella console che nella risorsa di archiviazione permanente.

Usare l'interfaccia della riga di comando di Azure per creare e distribuire una nuova app con Logback nell'archiviazione permanente

  1. Usare il comando seguente per creare un'applicazione in Azure Spring Apps con l'archiviazione permanente abilitata e il set di variabili di ambiente:

    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

    Il valore della LOGS variabile di ambiente può essere uguale o una sottodirectory dell'oggetto mountPath.

    Di seguito è riportato un esempio del file JSON passato al --persistent-storage parametro nel comando create. In questo esempio viene passato lo stesso valore per la variabile di ambiente nel comando dell'interfaccia della riga di comando precedente e nella mountPath proprietà seguente:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Usare il comando seguente per distribuire l'applicazione:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. Usare il comando seguente per controllare il log della console dell'applicazione:

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

    Passare alla risorsa account Archiviazione di Azure associata e individuare la condivisione file di Azure collegata come risorsa di archiviazione permanente. In questo esempio i log verranno scritti nel file spring-boot-logger.log nella radice della condivisione file di Azure. Tutti i file di log ruotati verranno archiviati nella cartella /archived nella condivisione file di Azure.

  4. Facoltativamente, usare il comando seguente per aggiornare il percorso o l'archiviazione permanente di un'app esistente:

    Il percorso o l'archiviazione permanente in cui i log vengono salvati possono essere modificati in qualsiasi momento. L'applicazione verrà riavviata quando vengono apportate modifiche alle variabili di ambiente o all'archiviazione permanente.

    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>
    

Passaggi successivi