Verwenden von Logback zum Schreiben von Protokollen in benutzerdefinierten persistenten Speicher
Hinweis
Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von 3 Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.
Der Standardverbrauchs- und dedizierte Plan wird ab dem 30. September 2024 als veraltet gekennzeichnet und nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren vom Standardverbrauchs- und dedizierten Plan von Azure Spring Apps zu Azure Container Apps.
Dieser Artikel gilt für: ✔️ Java ❌ C#
Dieser Artikel gilt für: ✔️ Basic/Standard ✔️ Enterprise
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
- Eine vorhandene Speicherressource, die an eine Azure Spring Apps-Instanz gebunden ist. Informationen zum Binden einer Speicherressource finden Sie unter Aktivieren des eigenen persistenten Speichers in Azure Spring Apps.
- Die Logback-Abhängigkeit, die in Ihrer Anwendung enthalten ist. Weitere Informationen zu Logback finden Sie unter A Guide To Logback (Leitfaden für Logback).
- Die Azure Spring Apps-Erweiterung für die Azure-Befehlszeilenschnittstelle
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
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 vonmountPath
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 EigenschaftmountPath
unten übergeben:{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
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> \ --artifact-path <path-to-jar-file>
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.
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>