gpt4 book ai didi

java - 控制 gradle 插件中使用的第三方库的日志输出

转载 作者:行者123 更新时间:2023-11-30 07:26:03 27 4
gpt4 key购买 nike

我有一个使用库的 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()) 执行此操作不起作用。

关于java - 控制 gradle 插件中使用的第三方库的日志输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36802181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com