配置 Plexus 日志记录
Configuring Plexus Logging
我有一个使用 Plexus 日志功能的图书馆。我的项目使用 slf4j-simple 通过 slf4j 配置它自己的日志记录。
我试图通过 simplelogger.properties
使用
使库中的日志静音
org.slf4j.simpleLogger.log.com.acme.lib=off
这没有效果。
调试到罪魁祸首class,我发现它注入了一个org.codehaus.plexus.logging.Logger
。每当我从容器中获取组件时,Logger
就是一个 org.codehaus.plexus.logging.console.ConsoleLogger
.
我尝试像这样绑定我自己的记录器的 NoOp 实现以进行注入:
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
来构造我的记录器实现,如下所示:
// code from above, and additionally
container.releaseAll(container.lookupList(LoggerManager.class));
container.addComponent(new NoOpLoggerManager(), LoggerManager.class, "default");
虽然我现在也可以从容器中获取我的 LoggerManager
,但 ConsoleLogger
仍然被注入到库的组件中。
如何确保我的 NoOpLogger
被注入到组件中?
DefaultPlexusContainer
注入的Logger
实现不是从组件中查找得到的。
相反,您需要像这样通过 DefaultPlexusContainer#setLoggerManager
绑定 LoggerManager:
DefaultPlexusContainer container = new DefaultPlexusContainer();
container.setLoggerManager(new NoOpLoggerManager());
// other components
我有一个使用 Plexus 日志功能的图书馆。我的项目使用 slf4j-simple 通过 slf4j 配置它自己的日志记录。
我试图通过 simplelogger.properties
使用
org.slf4j.simpleLogger.log.com.acme.lib=off
这没有效果。
调试到罪魁祸首class,我发现它注入了一个org.codehaus.plexus.logging.Logger
。每当我从容器中获取组件时,Logger
就是一个 org.codehaus.plexus.logging.console.ConsoleLogger
.
我尝试像这样绑定我自己的记录器的 NoOp 实现以进行注入:
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
来构造我的记录器实现,如下所示:
// code from above, and additionally
container.releaseAll(container.lookupList(LoggerManager.class));
container.addComponent(new NoOpLoggerManager(), LoggerManager.class, "default");
虽然我现在也可以从容器中获取我的 LoggerManager
,但 ConsoleLogger
仍然被注入到库的组件中。
如何确保我的 NoOpLogger
被注入到组件中?
DefaultPlexusContainer
注入的Logger
实现不是从组件中查找得到的。
相反,您需要像这样通过 DefaultPlexusContainer#setLoggerManager
绑定 LoggerManager:
DefaultPlexusContainer container = new DefaultPlexusContainer();
container.setLoggerManager(new NoOpLoggerManager());
// other components