Logback を使用してカスタム永続ストレージにログを書き込む方法
Note
Basic、Standard、および Enterprise プランは、2025 年 3 月中旬以降に非推奨になり、3 年間の廃止期間となります。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨となり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金と専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象: ✔️ Java ❌ C#
この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise
この記事では、Logback を読み込んで、Azure Spring Apps 内のカスタム永続ストレージにログを書き込む方法について説明します。
Note
次の名前のいずれかを持つファイルがアプリケーションのクラスパス内にある場合、それは Spring Boot によって Logback の既定の構成に自動的に読み込まれます。
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
前提条件
- 既存のストレージ リソースが Azure Spring Apps インスタンスにバインドされている。 ストレージ リソースをバインドする必要がある場合は、Azure Spring Apps で独自の永続ストレージを有効にする方法に関するページを参照してください。
- ご利用のアプリケーションに Logback 依存関係が含まれている。 Logback の詳細については、「A Guide To Logback」 (Logback のガイド) を参照してください。
- Azure CLI 用の Azure Spring Apps 拡張機能
ログを特定のパスに書き込むように Logback 構成を編集する
logback-spring.xml サンプル ファイルを使用すれば、ログの書き込み先とするパスを設定できます。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<!-- please feel free to customize the log layout -->
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 'LOGS' here is a value to be read from the application's environment variable -->
<file>${LOGS}/spring-boot-logger.log</file>
<!-- please feel free to customize the log layout pattern -->
<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 daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- LOG everything at the INFO level -->
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<!-- LOG "com.baeldung*" at the TRACE level -->
<logger name="com.baeldung" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
</configuration>
前の例では、アプリケーションのログの書き込み先とするパスに {LOGS}
という名前のプレースホルダーが 2 つあります。 コンソールとご利用の永続ストレージの両方にログが書き込まれるようにするには、環境変数 LOGS
に値を割り当てる必要があります。
Azure CLI を使用して永続ストレージ上の Logback を使用する新規アプリを作成し、デプロイする
次のコマンドを使用すれば、永続的なストレージを有効にし、環境変数を設定して、Azure Spring Apps 内にアプリケーションを作成することができます。
az spring app create \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --persistent-storage <path-to-json-file> \ --env LOGS=/byos/logs
Note
LOGS
環境変数の値は、mountPath
またはそのサブディレクトリと同じにすることができます。create コマンド内の
--persistent-storage
パラメーターに渡される JSON ファイルの例を次に示します。 この例では、上記の CLI コマンド内の環境変数と下記のmountPath
プロパティで、同じ値が渡されます。{ "customPersistentDisks": [ { "storageName": "<Storage-Resource-Name>", "customPersistentDiskProperties": { "type": "AzureFileVolume", "shareName": "<Azure-File-Share-Name>", "mountPath": "/byos/logs", "readOnly": false } } ] }
次のコマンドを使用して、ご利用のアプリケーションをデプロイします。
az spring app deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --artifact-path <path-to-jar-file>
次のコマンドを使用して、そのアプリケーションのコンソール ログを確認します。
az spring app logs \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name>
バインドした Azure Storage アカウント リソースにアクセスし、永続ストレージとしてアタッチされた Azure ファイル共有を見つけます。 この例では、ご利用の Azure ファイル共有のルートにある spring-boot-logger.log ファイルにログが書き込まれます。 ローテーションされたログ ファイルはすべて、その Azure ファイル共有内の /archived フォルダーに格納されます。
必要に応じて、次のコマンドを使用して、既存のアプリのパスまたは永続ストレージを更新します。
ログの保存先となるパスや永続ストレージは、いつでも変更できます。 環境変数または永続ストレージのいずれかに変更が加えられると、アプリケーションが再起動します。
az spring app update \ --resource-group <resource-group-name> \ --name <app-name> \ --service <spring-instance-name> \ --persistent-storage <path-to-new-json-file> \ --env LOGS=<new-path>