创建对象后没有看到任何java日志记录

时间:2016-02-22 15:37:09

标签: java logging stderr

我正在扩展我继承的Java项目的功能,该项目使用包裹Log的类java.util.logging.Logger实现日志记录:

import java.util.logging.*;

public class Log {

    // ...
    private final Logger log;   

我正在集成第三方库,我遇到的问题是,在我从这个库创建类的对象后,所有日志记录都会停止。或者,更准确地说,我在System.err中看不到任何日志消息。因此,在下面的块中创建了类SomeClass的对象:

public class TopClass {

    private static final Log log = new Log(TopClass.class);

    // ...

    private static SomeClass foo = null;

    // ...

    public static void main(String[] args) {

        // ...
        log.severe("SEVERE-BEFORE");
        log.info("INFO-BEFORE");
        foo = new SomeClass();
        log.severe("SEVERE-AFTER");
        log.info("INFO-AFTER");

我可以看到SEVERE-BEFOREINFO-BEFORE但不是SEVERE-AFTERINFO-AFTER

如何确定foo初始化期间记录的情况?我可以访问SomeClass库的一些源代码,并搜索了任何提及" log"但没有找到任何。该库确实有几个System.err.priteln()次调用。该库还依赖于其他来源我无法访问的库。

1 个答案:

答案 0 :(得分:1)

构造函数SomeClass可能会抛出异常。 尝试将代码包装在try-catch

类似的东西:

public static void main(String[] args) {

        // ...
        log.severe("SEVERE-BEFORE");
        log.info("INFO-BEFORE");
        try
        {
            foo = new SomeClass();
        }
        catch (Throwable t)
        {
            log.severe("an exception was thrown", t);
        }
        log.severe("SEVERE-AFTER");
        log.info("INFO-AFTER");