Protokollieren mit dem Azure SDK für Java und Logback
Dieser Artikel enthält eine Übersicht über das Hinzufügen der Protokollierung mithilfe von Logback zu Anwendungen, die das Azure SDK für Java verwenden. Wie in Konfigurieren der Protokollierung im Azure SDK für Javaerwähnt, protokollieren alle Azure-Clientbibliotheken über SLF4J, sodass Sie Protokollierungsframeworks wie Logbackverwenden 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 eine Datei namens logback.xml im /src/main/resources Projektverzeichnis.
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 pom.xml Datei 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. Um das Logback-Logging zu aktivieren, erstellen Sie eine Datei namens logback.xml im ./src/main/resources Verzeichnis Ihres Projekts. 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-Kernfehlern
Die folgende Beispielkonfiguration ähnelt der vorherigen Konfiguration, verringert jedoch die Ebene, bei der die Protokollierung von allen com.azure.core
-Paketklassen (einschließlich der untergeordneten Pakete) 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. Beispielsweise können Sie diesen Ansatz verwenden, wenn Sie den Code in com.azure.core
zu laut finden. Diese Art der Konfiguration kann auch auf beide Arten erfolgen. Wenn Sie z. B. weitere Debuginformationen aus Klassen in com.azure.core
abrufen möchten, können Sie diese Einstellung in DEBUG ändern.
Es ist möglich, präzise Kontrolle über die Protokollierung bestimmter Klassen oder bestimmter Pakete zu haben. Wie hier gezeigt, steuert com.azure.core
die Ausgabe aller core-Klassen, aber Sie könnten genauso gut com.azure.security.keyvault
oder ein Äquivalent verwenden, um die Ausgabe so zu steuern, wie es für die Umstände, die im Kontext der ausgeführten Anwendung am informativsten sind, angemessen ist.
<?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
Die oben genannten Beispiele protokollieren in die Konsole, was normalerweise nicht der bevorzugte Ort 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 funktioniert, indem es die Datei Spring application.properties für verschiedene Konfigurationen, einschließlich der Logging-Konfiguration, liest. Es ist möglich, die Spring-Anwendung so zu konfigurieren, dass Logbackkonfigurationen aus einer beliebigen Datei gelesen werden. Konfigurieren Sie dazu die logging.config
-Eigenschaft so, dass sie auf die logback.xml Konfigurationsdatei verweist, indem Sie der Datei "Spring /src/main/resources/application.properties" die folgende Zeile hinzufü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 überprüfen, um weitere Details zu erhalten. Wenn Sie Logback verwenden, gibt es auch eine große Menge an Konfigurationsanleitungen auf seiner 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.