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

Führen Sie die folgenden zwei Schritte aus, um das Logback-Logging zu aktivieren:

  1. Fügen Sie die Logback-Bibliothek als Abhängigkeit hinzu.
  2. Erstellen Sie eine Datei mit dem Namen logback.xml im Projektverzeichnis "/src/main/resources ".

Weitere Informationen zum Konfigurieren von Logback finden Sie in der Logback-Dokumentation unter Logback-Konfiguration .

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. Erstellen Sie zum Aktivieren der Logbackprotokollierung eine Datei namens logback.xml im Verzeichnis ./src/main/resources 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 mit dem Schweregrad INFO oder höher protokolliert werden, unabhängig davon, woher sie stammen.

<?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 für alle com.azure.core verpackten Klassen (einschließlich Unterpackungen). Auf diese Weise wird alles auf der Ebene „INFO“ und höher protokolliert, mit Ausnahme von com.azure.core, wo nur die Ebene „ERROR“ und höher protokolliert wird. Beispielsweise können Sie diesen Ansatz verwenden, wenn Sie den Code in com.azure.core zu laut finden. Diese Art der Konfiguration kann auch in beide Richtungen gehen. Wenn Sie z. B. weitere Debuginformationen aus Klassen in com.azure.coreabrufen möchten, können Sie diese Einstellung in DEBUG ändern.

Sie können die Protokollierung bestimmter Klassen oder bestimmter Pakete steuern. 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. Sie können die Spring-Anwendung so 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 von Logback behandelt und wie man das Azure SDK für Java dazu bringt, es für die Protokollierung zu verwenden. 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.

Sobald Sie die Protokollierung beherrschen, sollten Sie sich die Integrationen ansehen, die Azure für Frameworks wie Spring bietet.