Protokollieren mit dem Azure SDK für Java und Logback
Dieser Artikel bietet eine Übersicht, wie Sie Protokollierung zu Anwendungen mithilfe von Logback hinzufügen, die das Azure SDK für Java verwenden. Wie unter Konfigurieren von Protokollierung im Azure SDK für Java beschrieben, führen alle Azure-Clientbibliotheken Protokollierung über SLF4J aus, damit Sie Protokollierungsframeworks wie Logback verwenden können.
Zum Aktivieren der Logback-Protokollierung müssen Sie zwei Schritte ausführen:
- Schließen Sie die Logback-Bibliothek als Abhängigkeit ein.
- Erstellen Sie im Projektverzeichnis /src/main/resources eine Datei namens logback.xml.
Weitere Informationen zum Konfigurieren von Logback finden Sie unter Logback-Konfiguration in der Logback-Dokumentation.
Hinzufügen der Maven-Abhängigkeit
Um die Maven-Abhängigkeit hinzuzufügen, fügen Sie den folgenden XML-Code in die Datei pom.xml des Projekts ein. Ersetzen Sie die Versionsnummer 1.2.3 durch die neueste veröffentlichte Versionsnummer, die auf der Seite Logback Classic Module (Klassisches Logback-Modul) angezeigt wird.
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
Hinzufügen von „logback.xml“ zu Ihrem Projekt
Logback ist eines der gängigen Protokollierungsframeworks. Erstellen Sie zum Aktivieren von Logback-Protokollierung im Verzeichnis ./src/main/resources Ihres Projekts eine Datei namens logback.xml. Diese Datei enthält die Protokollierungskonfigurationen, um Ihre Protokollierungsanforderungen anzupassen. Weitere Informationen zum Konfigurieren von logback.xml finden Sie unter Logback-Konfiguration in der Logback-Dokumentation.
Konsolenprotokollierung
Sie können eine Logback-Konfiguration erstellen, um die Protokollierung wie im folgenden Beispiel gezeigt in der Konsole auszugeben. Dieses Beispiel ist so konfiguriert, dass alle Protokollierungsereignisse unabhängig von der Quelle protokolliert werden, bei denen es sich um die Ebene INFO oder höher handelt.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %blue(%logger{100}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Protokollieren von Azure Core-Fehlern
Die folgende Beispielkonfiguration ähnelt der vorherigen Konfiguration, verringert jedoch die Ebene, auf der die Protokollierung aus allen com.azure.core
verpackten Klassen (einschließlich Unterpaketen) stammt. Auf diese Weise werden alle Ebenen INFO und höher protokolliert, mit Ausnahme von com.azure.core
. Für dieses Element wird nur die Ebene ERROR und höher protokolliert. Sie können diesen Ansatz zum Beispiel verwenden, wenn Sie den Code in com.azure.core
zu unruhig finden. Diese Art der Konfiguration kann auch auf beide Arten erfolgen. Wenn Sie z. B. weitere Debuginformationen von Klassen in com.azure.core
erhalten möchten, können Sie diese Einstellung in DEBUG ändern.
Es ist möglich, die Protokollierung bestimmter Klassen oder bestimmter Pakete präzise zu steuern. Wie hier gezeigt, com.azure.core
steuert die Ausgabe aller Kernklassen, aber Sie können die Ausgabe entsprechend den Umständen, die im Kontext der ausgeführten Anwendung am informativsten sind, verwenden com.azure.security.keyvault
oder gleichwertig steuern.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%message%n</pattern>
</encoder>
</appender>
<logger name="com.azure.core" level="ERROR" />
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Protokollieren in eine Datei mit aktivierter Protokollrotation
In den vorherigen Beispielen wird die Konsole protokolliert, was normalerweise nicht der bevorzugte Speicherort für Protokolle ist. Verwenden Sie die folgende Konfiguration, um stattdessen in eine Datei mit stündlichem Rollover zu protokollieren und für die Archivierung das gzip-Format zu verwenden:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOGS" value="./logs" />
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/spring-boot-logger.log</file>
<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 hourly and gzip logs -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd-HH}.log.gz</fileNamePattern>
</rollingPolicy>
</appender>
<!-- LOG everything at INFO level -->
<root level="INFO">
<appender-ref ref="RollingFile" />
</root>
</configuration>
Spring-Anwendungen
Das Spring-Framework arbeitet, indem die Spring-Datei application.properties für verschiedene Konfigurationen (einschließlich der Protokollierungskonfiguration) gelesen wird. Es ist jedoch möglich, die Spring-Anwendung so zu konfigurieren, dass sie Logback-Konfigurationen aus einer beliebigen Datei liest. Konfigurieren Sie dazu die Eigenschaft logging.config
so, dass sie auf die Konfigurationsdatei logback.xml verweist, indem Sie die folgende Zeile in Ihre Spring-Datei /src/main/resources/application.properties einfügen:
logging.config=classpath:logback.xml
Nächste Schritte
In diesem Artikel wurde die Konfiguration der Logback-Protokollierung behandelt und erläutert, wie das Azure SDK für Java für Protokollierung verwendet wird. Da das Azure SDK für Java mit allen SLF4J-Protokollierungsframeworks funktioniert, sollten Sie das SLF4J-Benutzerhandbuch zu Rate ziehen, um weitere Informationen zu erhalten. Wenn Sie Logback verwenden, finden Sie auch zahlreiche Konfigurationsanleitungen auf der zugehörigen Website. Weitere Informationen finden Sie unter Logback-Konfiguration in der Logback-Dokumentation.
Nachdem Sie die Protokollierung verstanden haben, können Sie sich die Integrationen von Azure in Frameworks wie Spring und MicroProfile ansehen.