[英]Control logging output from third-party libraries used in a gradle plugin
我有一個使用庫的 gradle 插件。 該庫使用 archaius,最終使用 sl4j 記錄一些信息。
當我從我的插件執行任務時,它最終使用了這個庫,然后最終使用了 archaius。 這意味着我開始看到所有這些來自 archaius 的日志消息。 有什么辦法可以關閉這個功能嗎?
我嘗試過的事情:
LIFECYCLE
/ QUIET
。com.netflix.level = QUIET
將logging.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.