http://logging.apache.org/log4j/2.x/maven-artifacts.html
日志接口库
common-logging
common-logging为众多具体的日志实现库提供了一个统一的接口。它允许在运行时绑定到任意的日志库。但由于它使用了ClassLoader寻找和载入底层的日志库,这导致像OSGi这样的框架无法正常工作,由于其不同的插件使用自己的ClassLoader。 OSGi的这种机制保证了插件互相独立,然而却使Apache Common-Logging无法工作。
详细参考:http://commons.apache.org/proper/commons-logging/
slf4j
即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样 的日志系统,允许最终用户在部署其应用时使用其所希望的日志系统。
实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。
common-logging与slf4j相比
common-logging在运行时通过动态查找机制自动找出真正使用的日志库,而sflfj则是在部署的时候就确定了所使用的日志库。目前slf4j用得更多一些。
在使用Commons Logging时,我们经常会看到以下方法的写法:
if (logger.isDebugEnabled()) {
logger.info("Loading XML bean definitions from " + encodedResource.getResource());
}
存在isDebugEnabled()的判断逻辑是为了在避免多余的字符串拼接,即如果不存在isDebugEnabled()判断,即使当前日志级别为ERROR时,在遇到logger.info()调用时,它还会先拼接日志消息的字符串,然后进入该方法内,才发现这个日志语句不用打印。而这种多余的拼接不仅浪费了多余的CPU操作,而且会增加GC的负担。SLF4J则提供以下的方式来解决这个问题:
logger.info("Loading XML bean definitions from {}", encodedResource.getResource());
日志实现库
java.util.logging
Java1.4及以上版本中自带的日志库实现。与log4j相比,功能要少一些。
Log4j
Log4j是Apache下的一个功能非常丰富的Java日志库实现。通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;用户也可以控制每一条日志的输出格式;它有两个主要版本,1.2和2.x。2.x在1.x基础上做了很多改进,吸收了Logback中的很多优点,而且解决了Logback中存在的一些问题。
详细参考:http://logging.apache.org/log4j/1.2/和http://logging.apache.org/log4j/2.x/
Logback
Logback是作为Log4j的替代者出现的,在很多方面相比Log4j更优秀。作者还专门撰文描述为什么要从Log4j迁移到Logback,参见:http://logback.qos.ch/reasonsToSwitch.html
Log4j与Logback相比
Logback与Log4j1.x相比,在各个方面都要更好,在它们之间选择肯定选Logback。但因为Log4j2.x的重大改进,在Log4j2.x和Logback之间的选择我还没来得及仔细分析和比较,暂时留个疑问,后面分析了再补上。不过对于一般的J2EE应用没有太大的区别。
参考资料:
1. http://liuzidong.iteye.com/blog/776072 Java日志框架:SLF4J, Apache Common-Logging, Log4J和Logback
2. http://www.blogjava.net/lhulcn618/articles/16996.html Log4j 对比 java.util.logging
3. http://www.cnblogs.com/Leo_wl/p/3417215.html Log4j、Log4j 2、Logback、SFL4J、JUL、JCL的比较
=========
补充资料:
log4j和log4j2区别:
http://blog.csdn.net/fangaohua200/article/details/53561718