SLF4J 与 Log4J,以及何时使用 isDebugEnabled 判断 博客分类: 开源框架Java
程序员文章站
2024-02-20 21:28:22
...
之前一篇关于 SLF4J 和 Log4J 的文章有不当之处,SLF4J 虽然避免了 Log4J 的字符串拼接问题,但是除非复杂的字符串拼接,否则使用 SLF4J 不会给你带来任何性能上的好处(我写了个小程序,有数据才有说服力)。当然 SLF4J + Logback 另当别论。使用 SLF4J 的主要目的是替代 Apache Common Logging,后者在 OSGi 环境中会有问题(从另一篇博文中看到的,仅供参考)。使用 SLF4J 能使代码和具体的 Log 实现框架分离,这点是与 Apache Common Logging 的功能相同的。
对于何时使用 Log4J 的 isDebugEnabled 的问题,过去我的做法是在任何调用了 debug 方法的地方之前都加了 isDebugEnabled 的判断。但其实通常情况下这是多余的。isDebugEnabled 的目的是为了避免组装日志消息多带来的不必要的性能损耗。但多数日志消息都是很简单的,其字符串拼接的性能损耗是忽略不计的。所以除非是你所要组装的日志消息会有重量级的操作,否则是不用加 isDebugEnabled 检查的。