在 Java 中,为什么最好声明一个记录器 static final
?
private static final Logger S_LOGGER
原文由 user489041 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Java 中,为什么最好声明一个记录器 static final
?
private static final Logger S_LOGGER
原文由 user489041 发布,翻译遵循 CC BY-SA 4.0 许可协议
查看此博客文章: 摆脱 Java 静态记录器。这是将 slf4j 与 jcabi-log 一起使用的方式:
import com.jcabi.log.Logger;
class Foo {
void save(File f) {
Logger.info(this, "file %s saved successfully", f);
}
}
永远不要再使用那种静态噪音。
原文由 yegor256 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
private
- 这样就没有其他类可以 劫持 你的记录器static
- 所以每个类只有一个记录器实例,也避免了序列化记录器的尝试final
- 无需在类的生命周期内更改记录器此外,我更喜欢 name
log
尽可能简单,但具有描述性。编辑:但是这些规则有一个有趣的例外:
而不是:
前一种方法允许您在整个继承层次结构中的所有类中使用相同的记录器名称(实际类的名称)。因此,如果
Bar
扩展Foo
,两者都将记录到Bar
记录器。有些人觉得它更直观。