【问题标题】:Java using multiple logger types in the same file skipping log statementsJava 在同一个文件中使用多个记录器类型跳过日志语句
【发布时间】: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


【解决方案1】:

要查看记录器的输出,您必须附加Handler subclass。您可以从code 添加它们,也可以创建一个logging.properties

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多