使用適用于 JAVA 和 Logback 的 Azure SDK 進行記錄

本文提供如何使用 Logback 將記錄新增至使用 Azure SDK for JAVA 的應用程式的概觀。 如在適用于 JAVA 的 Azure SDK 中設定記錄中所述 ,所有 Azure 用戶端程式庫都會透過 SLF4J 記錄,因此您可以使用記錄架構,例如 Logback

若要啟用 Logback 記錄,您必須執行兩件事:

  1. 將 Logback 程式庫納入為相依性,
  2. 在 /src/main/resources 專案目錄中建立名為 logback.xml 檔案。

如需設定 Logback 的詳細資訊,請參閱 Logback 檔中的 Logback 組態

新增 Maven 相依性

若要新增 Maven 相依性,請在專案的 pom.xml 檔案中包含下列 XML。 將 1.2.3 版本號碼取代為 Logback 傳統模組頁面上 顯示 的最新發行版本本號碼。

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

將 logback.xml 新增至您的專案

Logback 是其中一個熱門的記錄架構。 若要啟用 Logback 記錄,請在專案的 ./src/main/resources 目錄中建立名為 logback.xml 的檔案。 此檔案包含自訂記錄需求的記錄組態。 如需設定 logback.xml 的詳細資訊,請參閱 Logback 檔中的 Logback 組態

主控台記錄

您可以建立 Logback 組態來登入主控台,如下列範例所示。 此範例已設定為記錄 INFO 層級或更高層級的所有記錄事件,無論事件來自何處。

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

記錄 Azure 核心錯誤

下列範例組態類似于先前的組態,但它會降低記錄來自所有 com.azure.core 封裝類別的層級(包括子套件)。 如此一來,INFO 層級和更高層級的所有專案都會記錄,但 除了 com.azure.core 之外,只會記錄 ERROR 層級和更高層級。 例如,如果您在 太吵雜中 com.azure.core 尋找程式碼,則可以使用此方法。 這種設定也可以雙向。 例如,如果您想要從 中的 com.azure.core 類別取得更多偵錯資訊,您可以將此設定變更為 DEBUG。

可以更精細地控制特定類別或特定套件的記錄。 如這裡所示, com.azure.core 控制所有核心類別的輸出,但您可以同樣使用 com.azure.security.keyvault 或對等方式控制輸出,以符合執行中應用程式內容中最具資訊性的情況。

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

登入已啟用記錄輪替的檔案

上述範例會記錄到主控台,這通常不是記錄的慣用位置。 請改用下列組態來登入檔案,並以 gzip 格式進行每小時變換和封存:

<?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 應用程式

Spring 架構的運作方式是讀取 Spring application.properties 檔案以取得各種組態,包括記錄組態。 不過,您可以設定 Spring 應用程式,從任何檔案讀取 Logback 組態。 若要這樣做, logging.config 請將下列這一行新增至 Spring /src/main/resources/application.properties 檔案,將 屬性設定為指向 logback.xml 組態檔:

logging.config=classpath:logback.xml

下一步

本文涵蓋 Logback 的設定,以及如何讓適用于 JAVA 的 Azure SDK 用於記錄。 因為適用于 JAVA 的 Azure SDK 適用于所有 SLF4J 記錄架構,請考慮檢閱 SLF4J 使用者手冊 以取得進一步的詳細資料。 如果您使用 Logback,其網站上也有大量的設定指引。 如需詳細資訊,請參閱 Logback 檔中的 Logback 組態

掌握記錄之後,請考慮查看 Azure 提供給 Spring MicroProfile 等 架構的整合。