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

この記事では、JavaのAzure SDKを使用するアプリケーションに Log4j を構成する方法について説明します。 「JavaのAzure SDKでログ記録を構成する」で説明したように、すべてのAzureクライアント ライブラリは SLF4J を介してログを記録するため、Log4j 2 などのフレームワークを使用してトラブルシューティングを簡略化できます。

この記事では Log4J 2.x リリースを使用するためのガイダンスを提供しますが、JavaのAzure SDKでは Log4J 1.x もサポートされています。 log4j ログを有効にするには、次の 2 つの手順を実行します。

  1. 依存関係として log4j ライブラリを含めます。
  2. /src/main/resources プロジェクト ディレクトリの下に構成ファイル (log4j2.properties または log4j2.xml) を作成します。

log4j の構成の詳細については、「 Log4j 2 へようこそ」を参照してください。

Maven 依存関係を追加する

Maven 依存関係を追加するには、プロジェクトの pom.xml ファイルに次の XML を含めます。 2.16.0 のバージョン番号を、Apache Log4j SLF4J バインド ページに表示されている最新のリリースバージョン番号に置き換えます。

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.16.0</version>
</dependency>

手記

既知の脆弱性 CVE-2021-44228 が原因で、Log4j バージョン 2.16 以降を使用してください。

Log4j の構成

Log4j は、外部プロパティ ファイルまたは外部 XML ファイルの 2 つの一般的な方法で構成できます。 次のセクションでは、これらの方法について説明します。

プロパティ ファイルを使用する

log4j2.properties という名前のフラット プロパティ ファイルをプロジェクトの /src/main/resources ディレクトリに配置します。 このファイルの形式は次のとおりです。

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d %5p [%t] %c{3} - %m%n

logger.app.name = com.azure.core
logger.app.level = ERROR

rootLogger.level = info
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

XML ファイルを使用する

log4j2.xml という名前の XML ファイルをプロジェクトの /src/main/resources ディレクトリに配置します。 ファイルは次の構造に従う必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %5p [%t] %c{3} - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.azure.core" level="error" additivity="true">
            <appender-ref ref="console" />
        </Logger>
        <Root level="info" additivity="false">
            <appender-ref ref="console" />
        </Root>
     </Loggers>
</Configuration>

次の手順

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

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