我正在做一个项目,目前正在用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()); } ... }
如果有一个类经常调用它,则可以覆盖它以提供一个缓存的实例。