我正在扩展我继承的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-BEFORE
和INFO-BEFORE
但不是SEVERE-AFTER
或INFO-AFTER
。
如何确定foo
初始化期间记录的情况?我可以访问SomeClass
库的一些源代码,并搜索了任何提及" log"但没有找到任何。该库确实有几个System.err.priteln()
次调用。该库还依赖于其他来源我无法访问的库。
答案 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");