Verwenden von Logback zum Schreiben von Protokollen in benutzerdefinierten persistenten Speicher

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

Dieser Artikel gilt für: ✔️ Java C#

Dieser Artikel gilt für: ✔️ Basic-/Standard-Dienstebene ✔️ Enterprise-Dienstebene

In diesem Artikel erfahren Sie, wie Sie Logback laden und Protokolle in benutzerdefinierten persistenten Speicher in Azure Spring Apps schreiben.

Hinweis

Wenn eine Datei im Klassenpfad der Anwendung einen der folgenden Namen hat, wird sie von Spring Boot automatisch über die Standardkonfiguration für Logback geladen:

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

Voraussetzungen

Bearbeiten der Logback-Konfiguration zum Schreiben von Protokollen in einen bestimmten Pfad

Sie können den Pfad zum Schreiben von Protokollen mithilfe der Beispieldatei „logback-spring.xml“ festlegen.

<?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>

Im vorherigen Beispiel gibt es zwei Platzhalter namens {LOGS} im Pfad zum Schreiben der Anwendungsprotokolle. Der Umgebungsvariablen LOGS muss ein Wert zugewiesen werden, damit das Protokoll sowohl in die Konsole als auch in Ihren persistenten Speicher geschrieben werden kann.

Verwenden der Azure CLI zum Erstellen und Bereitstellen einer neuen App mit Logback im persistenten Speicher

  1. Verwenden Sie den folgenden Befehl, um eine Anwendung in Azure Spring Apps mit aktivierten persistenten Speicher und festgelegter Umgebungsvariablen zu erstellen:

    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
    

    Hinweis

    Der Wert der Umgebungsvariablen LOGS kann derselbe oder ein Unterverzeichnis von mountPath sein.

    In diesem Beispiel sehen sie die JSON-Datei, die im Create-Befehl an den Parameter --persistent-storage übergeben wird. In diesem Beispiel wird der gleiche Wert für die Umgebungsvariable im CLI-Befehl oben und in der Eigenschaft mountPath unten übergeben:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. Verwenden Sie den folgenden Befehl, um Ihre Anwendung bereitzustellen:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --jar-path <path-to-jar-file>
    
  3. Verwenden Sie den folgenden Befehl, um das Konsolenprotokoll Ihrer Anwendung zu überprüfen:

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

    Wechseln Sie zu der Azure Storage-Kontoressource, die Sie gebunden haben, und suchen Sie die Azure-Dateifreigabe, die als persistenter Speicher angefügt wurde. In diesem Beispiel werden die Protokolle in die Datei spring-boot-logger.log im Stammverzeichnis Ihrer Azure-Dateifreigabe geschrieben. Alle rotierten Protokolldateien werden im Ordner /archived in Ihrer Azure-Dateifreigabe gespeichert.

  4. Optional können Sie den folgenden Befehl verwenden, um den Pfad oder den persistenten Speicher einer vorhandenen App zu aktualisieren:

    Der Pfad oder der persistente Speicher, in dem die Protokolle gespeichert werden, kann jederzeit geändert werden. Die Anwendung wird neu gestartet, wenn Änderungen an den Umgebungsvariablen oder am persistenten Speicher vorgenommen werden.

    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>
    

Nächste Schritte