欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SLF4J 与 Log4J,以及何时使用 isDebugEnabled 判断 博客分类: 开源框架Java  

程序员文章站 2024-02-20 21:59:34
...

之前一篇关于 SLF4J 和 Log4J 的文章有不当之处,SLF4J 虽然避免了 Log4J 的字符串拼接问题,但是除非复杂的字符串拼接,否则使用 SLF4J 不会给你带来任何性能上的好处(我写了个小程序,有数据才有说服力)。当然 SLF4J + Logback 另当别论。使用 SLF4J 的主要目的是替代 Apache Common Logging,后者在 OSGi 环境中会有问题(从另一篇博文中看到的,仅供参考)。使用 SLF4J 能使代码和具体的 Log 实现框架分离,这点是与 Apache Common Logging 的功能相同的。

 

对于何时使用 Log4J 的 isDebugEnabled 的问题,过去我的做法是在任何调用了 debug 方法的地方之前都加了 isDebugEnabled 的判断。但其实通常情况下这是多余的。isDebugEnabled 的目的是为了避免组装日志消息多带来的不必要的性能损耗。但多数日志消息都是很简单的,其字符串拼接的性能损耗是忽略不计的。所以除非是你所要组装的日志消息会有重量级的操作,否则是不用加 isDebugEnabled 检查的。