簡體   English   中英

控制 gradle 插件中使用的第三方庫的日志輸出

[英]Control logging output from third-party libraries used in a gradle plugin

我有一個使用庫的 gradle 插件。 該庫使用 archaius,最終使用 sl4j 記錄一些信息。

當我從我的插件執行任務時,它最終使用了這個庫,然后最終使用了 archaius。 這意味着我開始看到所有這些來自 archaius 的日志消息。 有什么辦法可以關閉這個功能嗎?

我嘗試過的事情:

  • 將插件的 apply 方法中的日志級別設置為LIFECYCLE / QUIET
  • 使用com.netflix.level = QUIETlogging.properties文件添加到插件的src/main/resources

以上都沒有奏效。 有沒有辦法禁用這些日志消息?

我想出了怎么做。 不幸的是,它取決於 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())這樣做是行不通的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM