使用抽象类进行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