繁体   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