Gradleのロギング
GradleはSLF4Jを拡張したロガーを内包しており、
gradle〜を実行した時に出力されるログはこれによる出力である。
以下は、Gradleのロガーの6つのログレベルを詳細度が低い順に並べたものである。
| ログレベル | オプション | 説明 |
|---|---|---|
| ERROR | なし | ビルドエラー発生時に、標準エラー、エラーメッセージを出力 |
| WARNING | なし | 警告がある場合に警告メッセージを出力 |
| QUIET | -q(--quiet) | 標準出力、重要な情報のみを出力 |
| LIFECYCLE | なし(デフォルト) | タスク名、ビルド結果、実行時間など進行状況を出力 |
| INFO | -i(--info) | Gradle内部の処理のログなど、詳細な情報を出力 |
| DEBUG | -d(--debug) | INFOよりも詳細な情報を出力 |
ロガーの使い方
ビルドスクリプトでのロガーの使用方法は簡単で、loggerプロパティを利用するだけでいい。
logger.error 'エラーメッセージ'
logger.warn '警告メッセージ'
logger.quiet '重要なメッセージ'
logger.lifecycle '進行状況を示すメッセージ'
logger.info 'インフォメーションメッセージ'
logger.debug 'デバッグメッセージ'
外部ロギングフレームワークとのマッピング
ビルドスクリプト上で、外部ロギングフレームワークのクラスをimportして使用した場合、
それらのロガーが出力した内容はGradleのロガーにリダイレクトされる。
この際、あらかじめ外部のログレベルがGradleのログレベルにマッピングされているので、
特に設定なしに、各ログレベルに対応した出力を得ることができる。
各ロギングフレームワークとのマッピング
Apache log4j / Log4j 2
| Gradleのログレベル | Log4jのログレベル |
|---|---|
| ERROR | FATAL/ERROR |
| WARNING | WARN |
| QUIET | なし |
| LIFECYCLE | なし |
| INFO | INFO |
| DEBUG | DEBUG |
〜Apache Log4j 2 使用時の注意点〜
Apache Log4j 2は他のロギングフレームワークとの連携のための
ブリッジライブラリが用意されている。
Gradleとの連携には、「log4j-to-slf4j.jar」というライブラリが必須で、これがないと
FATALとERROR以外の出力はマッピングされないのである。
Apache Commons Logging
内容はLog4jと全く同じ。
| Gradleのログレベル | Commonsのログレベル |
|---|---|
| ERROR | FATAL/ERROR |
| WARNING | WARN |
| QUIET | なし |
| LIFECYCLE | なし |
| INFO | INFO |
| DEBUG | DEBUG |
JDK標準ロギングAPI
FINEの上には、FINER、FINESTというログレベルが存在するが、
Gradleにおいて出力できるのはFINEまでとなっている。
| Gradleのログレベル | JDKのログレベル |
|---|---|
| ERROR | SERVER |
| WARNING | WARNING |
| QUIET | なし |
| LIFECYCLE | なし |
| INFO | INFO/CONFIG |
| DEBUG | FINE |
ログレベルマッピングの変更
通常、Gradleの標準出力と標準エラーはそれぞれ、QUIETとERRORにリダイレクトされている。
Gradleでは、loggingプロパティを使用することで
各出力のリダイレクト先のログレベルを変更することができる。
// 標準出力のリダイレクト先の変更
logging.captureStandardOutput LogLevel.INFO
// 標準エラーのリダイレクト先の変更
logging.captureStandardError LogLevel.INFO
参照
この記事は以下の書籍を参考に執筆しています。