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
参照
この記事は以下の書籍を参考に執筆しています。