流行日志的种类 slf4j、log4j、logback

slf4j

有些特点需要优先考虑

1:slf4j是一个抽象层日志框架,使用slf4j可以是系统独立于任何特定的日志库。

它可以和各种框架结合输出日志,
例如log4j,logback,slf4j-simple。这些特点使得有些提供依赖的jar包内部开发时使用slf4j日志
对外部使用的日志框架不产生依赖问题。(如果内部jar使用的log4j,
而外部的系统采用logback.科恩那个导致内部日志输出问题)

2:写法

static private Logger logger = LoggerFactory.getLogger(Slf4jTest.class);
logger.info("[info message]{},{},{},{}", "abc", false, 123,new Slf4jTest());

好用的地方是slf4j支持模式注入的方式。这种方式更加适合在代码内部记录日志功能。
使用占位符”{}”的方式提供日志模式注入,因为它会在运行时被某个提供的实际字符串所替换。
这不仅降低了你代码中字符串连接次数,而且还节省了新建的String对象。

3:总结
总结这次说的,我建议使用SLF4J的而不是直接使用 Log4j, commons logging, logback
或者 java.util.logging 已经足够充分了。
3.1:在你的开源或内部类库中使用SLF4J会使得它独立于任何一个特定的日志实现,
这意味着不需要管理多个日志配置或者多个日志类库,你的客户端会很感激这点。

3.2:SLF4J提供了基于占位符的日志方法,这通过去除检查isDebugEnabled(),
isInfoEnabled()等等,提高了代码可读性。

3.3:通过使用SLF4J的日志方法,你可以延迟构建日志信息(Srting)的开销,
直到你真正需要,这对于内存和CPU都是高效的。

3.4:作为附注,更少的暂时的字符串意味着垃圾回收器(Garbage Collector)
需要做更好的工作,这意味着你的应用程序有为更好的吞吐量和性能。

3.5:这些好处只是冰山一角,你将在开始使用SL4J和阅读其中代码的时候知道更多的好处。
我强烈建议,任何一个新的Java程序员,
都应该使用SLF4J做日志而不是使用包括Log4J在内的其他日志API。