【发布时间】:2017-08-16 12:34:51
【问题描述】:
有一个 maven OSGI 组件,我在其中调用了 EclipseStarter.stop() 语句来关闭 OSGI 框架。在这一行之后打印了几条日志语句。我使用 pax-logging 和 log4j2 作为日志后端,并在前端使用 JCL。
由于 OSGI 框架已关闭,日志消息不会通过 pax-logging-log4j2 打印。因此,我尝试使用 java util logging 来打印这些消息。 java文件中的logger初始化如下。
private static final Log log = LogFactory.getLog(MyClass.class);
private static final Logger logger = Logger.getLogger(MyClass.class.getName());
log.info("Before shutdown");
EclipseStarter.stop();
logger.log(Level.INFO, "After shutdown JUL");
log.info("After shutdown JCL");
在我调试时,util logging 语句似乎正在跳过。
【问题讨论】:
-
您是否确认有处理程序附加到
MyClass记录器、MyClass记录器或根记录器的父级? -
看起来没有。方法 log(Record) 中的 handlers.publish(record) 被跳过。
-
附加一个处理程序。在
stop调用之前添加一条 JUL 日志语句以帮助调试。 -
再次以编程方式添加处理程序。感谢您的建议。您可以将其添加为答案,以便我接受。
标签: java maven osgi java.util.logging apache-commons-logging