Come usare Logback per scrivere log in un archivio permanente personalizzato
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
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
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'oggettomountPath
.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 nellamountPath
proprietà seguente:{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
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>
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.
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>