为什么?它的运行时发现算法有什么问题?性能?
不,不是性能,而是类加载器的痛苦。JCL发现过程依赖于类装入器黑客在运行时查找日志记录框架,但是这种机制会导致许多问题,包括意外行为,难以调试的类装入问题,从而导致复杂性增加。Ceki(Log4J,SLF4J和Logback的作者)在采用commons-
logging
API(还提到了使用JCL观察到的内存泄漏问题)之前,再次在Think中捕获了这一点。
这就是创建使用静态绑定的SLF4J的原因。
Ceki是SLF4J的作者,您可能会认为他的文章有偏见,但相信我,他们没有这样做,他正在提供大量参考文献(证据)来证明他的观点。
总结一下:
- 是的,已知JCL已损坏,最好远离它。
- 如果要使用日志记录外观(并非所有项目都需要),请使用SLF4J。
- SLF4J为仍使用JCL的框架(如Spring :)提供了JCL到SLF4J的桥梁。
- 我发现Logback是Log4J的继任者Logback,它是一种出色的日志记录实现。
- Logback本机实现SLF4J API。这意味着,如果您使用的是Logback,则实际上是在使用SLF4J API。
- Commons Logging是我的错
- 在采用commons-logging API之前要三思
- SLF4J VS JCL /动态绑定VS静态绑定
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)