使用抽象类进行Java日志记录

我正在做一个项目,目前正在用log4j实现一些日志记录,我很好奇我应该如何实现日志。我要介绍的两个实现如下:

将超类的单个日志用于该类和所有子类:

public abstract class AbstractFoo {

protected static Log LOG = LogFactory.getLog(AbstractFoo.class);

...

}

public class Foo extends AbstractFoo {

public void someMethod() {

LOG.info("Using abstract log");

}

}

为每个类,上级和下级使用单独的日志:

public abstract class AbstractFoo {

private static Log LOG = LogFactory.getLog(AbstractFoo.class);

...

}

public class Foo extends AbstractFoo {

private static Log LOG = LogFactory.getLog(Foo.class);

public void someMethod() {

LOG.info("Using own log");

}

}

什么更有意义,为什么?

回答:

我也不会 相反,我会在两种情况下都使用正确的类。

public abstract class AbstractFoo {

protected final Log log = LogFactory.getLog(getClass());

...

}

public class Foo extends AbstractFoo {

public void someMethod() {

log.info("Using abstract log");

}

}

如果您不进行大量日志记录(无论如何是个好主意),则可以改用一种方法。

public abstract class AbstractFoo {

protected Log log() { return LogFactory.getLog(getClass()); }

...

}

如果有一个类经常调用它,则可以覆盖它以提供一个缓存的实例。

以上是 使用抽象类进行Java日志记录 的全部内容, 来源链接: utcz.com/qa/397816.html

回到顶部