首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置Plexus日志记录

配置Plexus日志记录
EN

Stack Overflow用户
提问于 2018-01-23 14:07:24
回答 1查看 255关注 0票数 0

我有一个使用Plexus日志设备的图书馆。我的项目使用slf4j-simple通过slf4j配置自己的日志记录。

我尝试通过simplelogger.properties静音库中的日志记录

代码语言:javascript
复制
org.slf4j.simpleLogger.log.com.acme.lib=off

这没有效果。

调试到罪犯类中,我发现它被注入了一个org.codehaus.plexus.logging.Logger。每当我从容器中获得组件时,这个Logger就是一个org.codehaus.plexus.logging.console.ConsoleLogger

我试图绑定我自己的用于注入的记录器NoOp实现,如下所示:

代码语言:javascript
复制
PlexusContainer container = new DefaultPlexusContainer();
// other components
// remove all Logger components
container.releaseAll(container.lookupList(Logger.class));
container.addComponent(new NoOpLogger(), Logger.class, "default");

但这并没有对实际注入的记录器实例产生影响。我的,可以使用container.lookup(Logger.class)从容器中获得Logger实现,但是组件仍然使用它的ConsoleLogger

为了纠正这种情况,我尝试注册一个LoggerManager,它可以构造我的记录器实现,如下所示:

代码语言:javascript
复制
// code from above, and additionally
container.releaseAll(container.lookupList(LoggerManager.class));
container.addComponent(new NoOpLoggerManager(), LoggerManager.class, "default");

虽然我现在也可以从容器中获得我的LoggerManager,但是ConsoleLogger仍然被注入到库的组件中。

如何确保将NoOpLogger注入到组件中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 14:07:24

Logger注入的DefaultPlexusContainer实现不是通过从组件中查找它们来获得的。

相反,您需要像这样通过LoggerManager通过DefaultPlexusContainer#setLoggerManager绑定:

代码语言:javascript
复制
DefaultPlexusContainer container = new DefaultPlexusContainer();
container.setLoggerManager(new NoOpLoggerManager());
// other components
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48403697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档