博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
比较 SLF4J 与 log4j
阅读量:5744 次
发布时间:2019-06-18

本文共 1261 字,大约阅读时间需要 4 分钟。

hot3.png

SLF4J :JAVA简易日志门面Simple Logging Facade for Java,缩写SLF4J)

他是一套包装Logging框架的接口程式,以外观模式实现。可在软件部署的时候决定要使用的 Logging 框架,目前主要支援的有Java Logging APIlog4jlogback等框架。以MIT 授权方式发布。

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

SLF4J 与 log4j 的比较:

1、log4j 提供 TRACE, DEBUG, INFO, WARN, ERROR 及 FATAL 六种纪录等级,但是 SLF4J 认为 ERROR 与 FATAL 并没有实质上的差别,所以拿掉了 FATAL 等级,只剩下其他五种。

2、大部分人在程序里面会去写logger.error(exception),其实这个时候log4j回去把这个exception tostring。真正的写法应该是logger(message.exception);而slf4j就不会使得程序员犯这个错误。

3、log4j间接的在鼓励程序员使用string相加的写法,而slf4j就不会有这个问题 ,你可以使用logger.error("{} is+serviceid",serviceid);

4、使用slf4j可以方便的使用其提供的各种集体的实现的jar。(类似commons-logger)

5、从commons--logger和log4j merge非常方便,slf4j也提供了一个swing的tools来帮助大家完成这个merge。

6、提供字串内容替换的功能,会比较有效率,说明如下:

//传统的字符串产生方式,如果没有要记录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);

7、SLF4J 只支持 MDC,不支持 NDC。

转载于:https://my.oschina.net/CandyDesire/blog/209552

你可能感兴趣的文章
负载均衡之Haproxy配置详解(及httpd配置)
查看>>
linux虚拟机拷贝之后联网出错
查看>>
Linux文件系统探索
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
查找恶意的TOR中继节点
查看>>
MAVEN 属性定义与使用
查看>>
hadoop2.7.2 HA搭建
查看>>
gitosc上传项目
查看>>
基于开源云平台OpenStack的存储分析
查看>>
关于Android Sqlite语句注意事项一点
查看>>
shell高级视频答学生while循环问题
查看>>
无法SSH到Ubuntu
查看>>
使用@media实现IE hack的方法
查看>>
磁盘管理 - 软RAID
查看>>
KVM下virtio驱动虚拟机XML配置文件分析
查看>>
创建一个基本镜像
查看>>
《11招玩转网络安全》之第一招:Docker For Docker
查看>>
7、kvm虚拟机快照备份
查看>>
visual studio 2005没有找到MSVCR80D.dll问题
查看>>
hive_0.11中文用户手册
查看>>