https://github.com/m-moris/log4j2-azure-blob-appender
Azure Blob Appender for Log4j2
https://github.com/m-moris/log4j2-azure-blob-appender
azure blob log4j2
Last synced: 6 months ago
JSON representation
Azure Blob Appender for Log4j2
- Host: GitHub
- URL: https://github.com/m-moris/log4j2-azure-blob-appender
- Owner: m-moris
- Created: 2019-06-06T05:10:18.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2025-02-04T11:33:04.000Z (over 1 year ago)
- Last Synced: 2025-07-07T17:14:32.478Z (about 1 year ago)
- Topics: azure, blob, log4j2
- Language: Java
- Homepage:
- Size: 89.8 KB
- Stars: 3
- Watchers: 0
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.ja.md
Awesome Lists containing this project
README
# Azure Blob Appender
[](https://www.apache.org/licenses/LICENSE-2.0.txt)
[](https://search.maven.org/search?q=a:log4j2-azure-blob-appender)
Azure Storage Blob にログを出力する log4j2用のカスタムアペンダーです。ストレージアカウントやキーをなどを直接指定する方法と、Azure App Service (WebApps) のアプリケーション診断ログを利用する方法があります。
## What's New
** 2025/02 **
依存ライブラリのバージョンを更新しました
**重要 2024/03**
マネージドIDに対応しました。内部的に `DefaultAzureCredential` を利用しています。
**更新 2024/03**
- 依存ライブラリの更新
- JDKバージョンを8から11に変更しました
**重要 2022/4/28**
ツール内部で利用している Azure SDK BLOBのバージョンを、V8系からV12系にアップデートしました。特にインタフェースに変更はありません。
それとともにツールバージョンを、V2系にしました。
## WebAppsモード
AApp Service には、アプリ診断ログ機能がありますが、これは .NET アプリケーションでのみ有効で、Javaから利用できませんが、これを解決することができます。ただし実行環境がWindowsの場合のみです。
[アプリの診断ログの有効化 - Azure App Service | Microsoft Docs](https://docs.microsoft.com/ja-jp/azure/app-service/troubleshoot-diagnostic-logs)
### 仕組み
App Service のアプリ診断ログを有効にすると、`DIAGNOSTICS_AZUREBLOBCONTAINERSASURL` 環境変数にSAS付きのStorage URLが設定されます。Azure Blob Appender はこのBLOBに追記するようにログを出力します。
参照する環境変数は以下の通りです、逆に言えば以下の環境変数が設定されていれば利用できます。
* `DIAGNOSTICS_AZUREBLOBCONTAINERSASURL`
* `WEBSITE_SITE_NAME`
* `WEBSITE_INSTANCE_ID`
Linux ベースの WebAppsには、アプリ診断ログ機能が用意されていないので利用できませんが。ただし、該当の環境変数を設定しておけば、動作すると思います。
## 一般モード
構成ファイルにストレージアカウントやキーを直接指定する方法です。
### 設定すべき項目
設定すべき項目は以下の通りです。後述するディレクトリ構造で出力するためPrefix1/Prefix2の指定が必要です。
ストレージキーで認証を利用する場合は以下の3つの値が必要です。
* ストレージアカウント
* ストレージアカウントキー
* コンテナ名
マネージドIDで認証を利用する場合は以下の1つの値が必要です。
* コンテナ名を含むBLOB URI (例 `https://{your-storage-account-name}.blob.core.windows.net/logs`)
階層を指定するための2つの値が必要です。
* Prefix1
* Prefix2
## BLOBのディレクトリ
WebAppsモードでは、 .NET アプリの診断ログと同じ構造で出力します。
`{WEBSITE_SITE_NAME}/yyyy/mm/dd/HH/{WEBSITE_INSTANCE_ID}_applicationLog.txt`
一般モードでは以下となります。
`{Prefix1}/yyyy/mm/dd/HH/{Prefix2}_applicationLog.txt`
log4j2の構成ファイルでは環境変数を参照できるので、実行する環境に適切な値を設定できます。
## 構成ファイル
設定する属性は以下の通り。
| 属性 | 型 | 意味 |
| ------------- | ------- | ---------------------------------------------------------------------- |
| webapps | boolean | `true`ならWebAppsモードで、以下の設定は無視される。デフォルトは`false` |
| accountName | string | ストレージアカウント名。webappsが`false`なら有効 |
| accountKey | string | ストレージアカウントキー。同上 |
| containerName | string | BLOBコンテナの名前。同上 |
| containerUri | string | BLOBコンテナのURI。同上 |
| prefix1 | string | Prefix1。同上 |
| prefix2 | string | Prefix2。同上 |
containerUriが優先される。
### 定義のサンプル
WebAppsモード
```xml
```
一般モード
```xml
```
## テスト
`test/resources/azureconfig.json` に値を設定すること。
以上