分享

如何选择正确的日志框架

 WindySky 2017-10-11

在 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 进行日志记录:

1
2
java.util.logging.Logger logger = java.util.logging.Logger.getLogger("App");
logger.info("User " + userId + " login.");

用 Log4J 进行日志记录:

1
2
private static Logger logger = Logger.getLogger(App.class);
logger.info("User " + userId + " login.");

用 SLF4J 进行日志记录:

1
2
org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(App.class);
logger.info("User {} login.", userId);

在上面 3 种方式中,JDKLog 和 Log4J 都需要对字符串进行拼接,不仅不利于阅读和因为字符串拼接会造成效率问题。而 SLF4J 可以用占位符的形式插入参数,可以提高日志的阅读体验,并且也能提高效率。

正式因为 SLF4J 提供了占位符、提高了效率,而且也能动态地更改具体实现的 Log API,因此现在越来越多的人采用 SLF4J+ 的方式进行日志记录。

Log4J 还是 LogBack 

Log4J 和 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

http://www./7450.html

http://www.cnblogs.com/mailingfeng/p/3499436.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多