Udostępnij za pośrednictwem


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

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

  1. 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 podkatalogu mountPath.

    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 we mountPath właściwości poniżej:

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

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

Następne kroki