次の方法で共有


Azure SDK for Java と Logback を使用してログを記録する

この記事では、Azure SDK for Java を使用するアプリケーションに Logback を使用してログ記録を追加する方法の概要について説明します。 「Azure SDK for Javaでのログ記録の構成」で説明されているように、すべての Azure クライアント ライブラリは、SLF4Jを介してログを記録するため、Logbackなどのログ記録フレームワークを使用できます。

Logback ログを有効にするには、次の 2 つの操作を行う必要があります。

  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 は、一般的なログ記録フレームワークの 1 つです。 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 パッケージクラス (サブパッケージを含む) からのログのレベルを下げます。 これにより、エラー レベル以上のみがログに記録される com.azure.coreを除き、INFO レベル以上のすべてがログに記録されます。 たとえば、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 ファイルを読み取って、ログ記録の構成など、さまざまな構成を行います。 ただし、任意のファイルから Logback 構成を読み取るために Spring アプリケーションを構成することもできます。 これを行うには、Spring /src/main/resources/application.properties ファイルに次の行を追加して、logback.xml 構成ファイルを指す logging.config プロパティを構成します。

logging.config=classpath:logback.xml

次の手順

この記事では、Logback の構成と、Azure SDK for Java でログ記録に使用する方法について説明しました。 Azure SDK for Java はすべての SLF4J ログ 記録フレームワークで動作するため、詳細については、SLF4J ユーザー マニュアル を確認することを検討してください。 Logback を使用する場合は、その Web サイトにも膨大な量の構成ガイダンスがあります。 詳細については、Logback ドキュメント Logback 構成 を参照してください。

ログ記録を習得したら、Azure が提供する統合を、Spring や MicroProfileなどのフレームワークに検討することを検討してください。