我是靠谱客的博主 勤劳冰淇淋,最近开发中收集的这篇文章主要介绍springcloud| 日志方案日志方案分类SLF4J优点建议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

日志方案分类

在Java生态体系中,围绕着日志,有很多成熟的解决方案。关于日志输出,主要有两类工具。一类是日志框架,主要用来进行日志的输出的,比如输出到哪个文件,日志格式如何等。 另外一类是日志门面,主要一套通用的API,用来屏蔽各个日志框架之间的差异的。

一类是日志框架,主要用来进行日志的输出的,比如输出到哪个文件,日志格式如何等。 (log4j,logback)
另外一类是日志门面,主要一套通用的API,用来屏蔽各个日志框架之间的差异的。commons-logging和SLF4J的功能是类似的,主要是用来做日志 门面的。提供更加好友的API工具。


SLF4J优点

Java简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,以外观模式实现。可以在软件部署的时候决定要使用的 Logging 框架,目前主要支援的有Java Logging API、Log4j及logback等框架。以MIT 授权方式发布。

SLF4J 的作者就是 Log4j 的作者 Ceki Gülcü,他宣称 SLF4J 比 Log4j 更有效率,而且比 Apache Commons Logging (JCL) 简单、稳定。

其实,SLF4J其实只是一个门面服务而已,他并不是真正的日志框架,真正的日志的输出相关的实现还是要依赖Log4j、logback等日志框架的。

由于SLF4J比较常用,这里多用一些篇幅,再来简单分析一下SLF4J,主要和Log4J做一下对比。相比较于Log4J的API,SLF4J有以下几点优势:

  • Log4j 提供 TRACE, DEBUG, INFO, WARN, ERROR 及 FATAL 六种纪录等级,但是 SLF4J 认为
    ERROR 与 FATAL 并没有实质上的差别,所以拿掉了 FATAL 等级,只剩下其他五种。
  • 大部分人在程序里面会去写logger.error(exception),其实这个时候Log4j会去把这个exception
    tostring。真正的写法应该是logger(message.exception);而SLF4J就不会使得程序员犯这个错误。
  • Log4j间接的在鼓励程序员使用string相加的写法(这种写法是有性能问题的),而SLF4J就不会有这个问题
    ,你可以使用logger.error(“{} is+serviceid”,serviceid);
  • 使用SLF4J可以方便的使用其提供的各种集体的实现的jar。(类似commons-logger)
  • 从commons–logger和Log4j merge非常方便,SLF4J也提供了一个swing的tools来帮助大家完成这个merge。
  • 提供字串内容替换的功能,会比较有效率,说明如下:
    // 传统的字符串产生方式,如果没有要记录Debug等级的信息,就会浪费时间在产生不必要的信息上
    logger.debug("There are now " + count + " user accounts: " + userAccountList);
    
    // 为了避免上述问题,我们可以先检查是不是开启了Debug信息记录功能,只是程序的编码会比较复杂
    if (logger.isDebugEnabled()) {
        logger.debug("There are now " + count + " user accounts: " + userAccountList);
    }
    
    // 如果Debug等级没有开启,则不会产生不必要的字符串,同时也能保持程序编码的简洁
    logger.debug("There are now {} user accounts: {}", count, userAccountList); 
    
  • SLF4J 只支持 MDC,不支持 NDC。

建议

所以,对于Java工程师来说,关于日志工具的使用,最佳实践就是在应用中使用如Log4j + SLF4J这样的组合来进行日志输出。

这样做的最大好处,就是业务层的开发不需要关心底层日志框架的实现及细节,在编码的时候也不需要考虑日后更换框架所带来的成本。这也是门面模式所带来的好处。所以请不要在你的Java代码中出现任何Log4j等日志框架的API的使用,而是应该直接使用SLF4J这种日志门面。

参考:
http://www.hollischuang.com/archives/3000

最后

以上就是勤劳冰淇淋为你收集整理的springcloud| 日志方案日志方案分类SLF4J优点建议的全部内容,希望文章能够帮你解决springcloud| 日志方案日志方案分类SLF4J优点建议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部