Jak używać usługi Logback do zapisywania dzienników w niestandardowym magazynie trwałym
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy: ✔️ Java ❌ C#
Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise
W tym artykule przedstawiono sposób ładowania dzienników zwrotnych i zapisywania dzienników do niestandardowego magazynu trwałego w usłudze Azure Spring Apps.
Uwaga
Gdy plik w ścieżce klasy aplikacji ma jedną z następujących nazw, program Spring Boot automatycznie załaduje go do domyślnej konfiguracji logback:
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
Wymagania wstępne
- Istniejący zasób magazynu powiązany z wystąpieniem usługi Azure Spring Apps. Jeśli musisz powiązać zasób magazynu, zobacz Jak włączyć własny magazyn trwały w usłudze Azure Spring Apps.
- Zależność logback uwzględniona w aplikacji. Aby uzyskać więcej informacji na temat rejestrowania zwrotnego, zobacz Przewodnik po logbacku.
- Rozszerzenie Azure Spring Apps dla interfejsu wiersza polecenia platformy Azure
Edytowanie konfiguracji logback w celu zapisania dzienników w określonej ścieżce
Ścieżkę do miejsca zapisywania dzienników można ustawić przy użyciu przykładowego pliku 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>
W poprzednim przykładzie istnieją dwa symbole zastępcze o nazwie {LOGS}
w ścieżce do zapisywania dzienników aplikacji. Wartość musi zostać przypisana do zmiennej LOGS
środowiskowej, aby zapis dziennika był zapisywany zarówno w konsoli, jak i w magazynie trwałym.
Tworzenie i wdrażanie nowej aplikacji za pomocą interfejsu wiersza polecenia platformy Azure z funkcją Logback w magazynie trwałym
Użyj następującego polecenia, aby utworzyć aplikację w usłudze Azure Spring Apps z włączonym magazynem trwałym i zestawem zmiennych środowiskowych:
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
Uwaga
Wartość zmiennej środowiskowej
LOGS
może być taka sama jak w przypadku podkatalogumountPath
.Oto przykład pliku JSON przekazanego do parametru
--persistent-storage
w poleceniu create. W tym przykładzie ta sama wartość jest przekazywana dla zmiennej środowiskowej w poleceniu interfejsu wiersza polecenia powyżej i wemountPath
właściwości poniżej:{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
Aby wdrożyć aplikację, użyj następującego polecenia:
az spring app deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --artifact-path <path-to-jar-file>
Użyj następującego polecenia, aby sprawdzić dziennik konsoli aplikacji:
az spring app logs \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name>
Przejdź do powiązanego zasobu konta usługi Azure Storage i znajdź udział plików platformy Azure dołączony jako magazyn trwały. W tym przykładzie dzienniki zostaną zapisane w pliku spring-boot-logger.log w katalogu głównym udziału plików platformy Azure. Wszystkie obrócone pliki dziennika będą przechowywane w folderze /archived w udziale plików platformy Azure.
Opcjonalnie użyj następującego polecenia, aby zaktualizować ścieżkę lub trwały magazyn istniejącej aplikacji:
Ścieżka lub magazyn trwały, w którym dzienniki są zapisywane, można zmienić w dowolnym momencie. Aplikacja zostanie uruchomiona ponownie po wprowadzeniu zmian w zmiennych środowiskowych lub magazynie trwałym.
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>