我有一个使用commons.logging的现有捆绑包。我想在eclipse插件测试期间为bundle中的类设置logLevel。欠测试本身不具有或要求log4j作为捆绑。因此,我需要知道如何配置束中可见的jsr-47记录器。
答案 0 :(得分:0)
JSR-47在整个JVM上共享一个日志管理器。客户端应该从资源初始化日志记录属性:
InputStream resourceAsStream = getClass().getResourceAsStream("logging.properties");
LogManager.getLogManager().readConfiguration(resourceAsStream);
资源必须处理两个常见的java日志记录:
看起来像这样:
handlers = java.util.logging.ConsoleHandler
.level=FINEST
test=FINEST
java.util.logging.ConsoleHandler.level = FINEST
目标以通常的方式激活和使用commons.logging:
log = LogFactory.getLog(getClass().getName();
log.debug("Badaboom");
输出然后转到共享LogManager,然后转到控制台。
警告:可以在代码中的其他位置动态更改为测试读取的配置。如果发生这种情况,请向Manager注册属性更改侦听器,并使用断点停止代码以查找更改配置的代码。
注意:此时还清楚为什么java.util.logging不适合OSGI:相同的类和因此记录器名称可以通过不同的包注册,覆盖设置。