在 Java 的日志记录中,常见的日志记录有:SLF4J、Log4J、LogBack、JDKLog。 辨析 SLF4J、Log4J、LogBack简单日记门面 SLF4J (Simple Logging Facade for Java)是为各种 Loging APIs 提供一个简单统一的接口,它本身只提供了日志 Facade API 和一个简单的日志类实现,一般需要配合 Log4j,LogBack,java.util.logging 使用。通过 SLF4J,用户在部署最终应用时方便的变更其日志系统。 在系统开发中,统一按照 SLF4J 的 API 进行开发。在部署时,选择不同的日志系统包,即可自动转换到不同的日志系统上。比如:选择JDK自带的日志系统,则只需要将 slf4j-api-1.5.10.jar 和 slf4j-jdk14-1.5.10.jar 放置到 classpath 中即可,如果中途无法忍受 JDK 自带的日志系统了,想换成 log4j 的日志系统,仅需要用 slf4j-log4j12-1.5.10.jar 替换 slf4j-jdk14-1.5.10.jar 即可。 如何选择日志开源框架SLF4J 虽然为其他开源框架提供了统一的 Logging APIs 接口,但是其他的开源框架也有自己的 Logging 实现。 用 JDKLog 进行日志记录:
用 Log4J 进行日志记录:
用 SLF4J 进行日志记录:
在上面 3 种方式中,JDKLog 和 Log4J 都需要对字符串进行拼接,不仅不利于阅读和因为字符串拼接会造成效率问题。而 SLF4J 可以用占位符的形式插入参数,可以提高日志的阅读体验,并且也能提高效率。 正式因为 SLF4J 提供了占位符、提高了效率,而且也能动态地更改具体实现的 Log API,因此现在越来越多的人采用 SLF4J+ 的方式进行日志记录。 Log4J 还是 LogBackLog4J 和 LogBack 的区别就像是小米一代和小米二代的区别,Log4J 是在 Log4J 的基础上进行一些性能优化而得来的,LogBack 在某些地方的效率甚至是 Log4J 的10 倍以上。所以对于 Log4J 和 LogBack,我们当然是选择 LogBack 啦! 当然了 LogBack 还有许多优于 Log4J 的地方,如果你感兴趣的话,可以看看这篇文章:http://www.oschina.net/translate/reasons-to-prefer-logbak-over-log4j?cmp LogBack 的结构LogBack被分为3个组件:logback-core、logback-classic 和 logback-access。 其中 logback-core 提供了 LogBack 的核心功能,是另外两个组件的基础。 logback-classic 则实现了 SLF4J 的API,所以当想配合 SLF4J 使用时,需要将 logback-classic 引入依赖中。 logback-access 是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。 最佳方案综合来说,SLF4J + LogBack 是一个较好的选择。
参考资料: http://blog.csdn.net/lifuxiangcaohui/article/details/7278595 |
|