我有一个使用库的gradle插件。该库使用archaius,最终使用sl4j记录一些信息。
当我从我的插件执行任务时,它最终使用此库,然后最终使用archaius。这意味着我开始看到来自archaius的所有这些日志消息。有什么办法可以解决这个问题吗?
我尝试过的事情:
LIFECYCLE
/ QUIET
。logging.properties
将src/main/resources
文件添加到插件com.netflix.level = QUIET
。 上述两种方法均无效。有没有办法禁用这些日志消息?
答案 0 :(得分: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使用的logger工厂实现,重置它,然后提供一个新的输出事件监听器。使用project.gradle.useLogger(new StfuLogger())
执行此操作无效。