为什么我们宣布记录器静态最终?
在Java中,为什么声明记录器是最佳实践?static final
private static final Logger S_LOGGER
在Java中,为什么声明记录器是最佳实践?static final
private static final Logger S_LOGGER
private
- 这样就没有其他类可以劫持你的记录器static
- 因此每个类只有一个记录器实例,也避免了尝试序列化记录器final
- 无需在类的生命周期内更改记录器另外,我更喜欢名称尽可能简单,但具有描述性。log
编辑:但是这些规则有一个有趣的例外:
protected final Logger log = LoggerFactory.getLogger(getClass());
相反:
private static final Logger log = LoggerFactory.getLogger(Foo.class);
前一种方法允许您在整个继承层次结构中的所有类中使用相同的记录器名称(实际类的名称)。所以如果扩展,两者都会记录到记录器。有些人发现它更直观。Bar
Foo
Bar
查看此博客文章:摆脱Java静态记录器。这就是你如何将slf4j与jcabi-log一起使用:
import com.jcabi.log.Logger;
class Foo {
void save(File f) {
Logger.info(this, "file %s saved successfully", f);
}
}
永远不要再使用这种静态噪音了。