# 选择SLF4J而不是直接选用Log4j, commons logging, logback

**URL:** <https://www.isharkfly.com/t/slf4j-log4j-commons-logging-logback/7079>\
**Category:** 程序语言\
**Created:** [November 6, 2014, 8:09pm UTC](https://www.isharkfly.com/t/slf4j-log4j-commons-logging-logback/7079 "2014-11-06T20:09:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [November 6, 2014, 8:09pm UTC](https://www.isharkfly.com/t/slf4j-log4j-commons-logging-logback/7079/1 "2014-11-06T20:09:01Z")

</div>

选择SLF4J而不是直接选用Log4j, commons logging, logback 或者 java.util.logging。

1）在你的开源库或者私有库中使用SLF4J，可以使它独立于任何的日志实现，这就意味着不需要管理多个库和多个日志文件。你的客户端将会体会到这一点。

2）SLF4J提供了占位日志记录，通过移除对isDebugEnabled(), isInfoEnabled()等等的检查提高了代码的可读性。

3）通过使用日志记录方法，直到你使用到的时候，才会去构造日志信息（字符串），这就同时提高了内存和CPU的使用率。

4）做一个侧面的说明，越少的临时字符串，垃圾回收器就意味着越少的工作，这就意味着为你的应用程序提供更好的吞吐量和性能。

这些优势都只是冰山一角，当你开始使用SL4J并阅读它，你会学到更多的好处。我强烈建议，在java中任何新的代码开发，都应使用SLF4J而不是任何的日志API，包括log4J。
