2016-04-22 20 views
0

私はライブラリを使用するgradleプラグインを使用しています。ライブラリはarchaiusを使い、sl4jを使っていくつかの情報を記録します。gradleプラグインで使用されているサードパーティライブラリからのログ出力を制御します。

私のプラグインからタスクを実行すると、このライブラリを使用して終了し、最終的にはarchaiusを使用して終了します。つまり、私はarchaiusから来るこれらのログメッセージをすべて見ることになります。これをオフにする方法はありますか?

物事は私が試してみました:

  • LIFECYCLE/QUIETに、プラグインの適用方法からログレベルを設定します。
  • logging.propertiesファイルをプラグインのsrc/main/resourcescom.netflix.level = QUIETと追加します。

上記のいずれも機能しませんでした。これらのログメッセージを無効にする方法はありますか?

答えて

0

私はそれを行う方法を理解しました。残念ながら、それはGradleの内部クラスに依存しますが、私は他の方法を見つけ出すことができませんでした:

void apply(Project project) { 
    OutputEventListenerBackedLoggerContext context = (OutputEventListenerBackedLoggerContext) LoggerFactory.getILoggerFactory(); 

    context.reset() 
    context.setOutputEventListener(new StfuLogger()) 
} 


class StfuLogger implements OutputEventListener { 
    @Override 
    void onOutput(OutputEvent event) { 
     LogEvent logEvent = (LogEvent) event 
     if(!logEvent.category.contains("com.netflix")) { 
      println(logEvent.message) 
     } 
    } 
} 

アイデアは、用途をGradleのロガーファクトリの実装を取得し、それをリセットし、新しい出力 - を供給することですイベントリスナー。 project.gradle.useLogger(new StfuLogger())で処理することはできません。

関連する問題