Java日志(四):JCL(Jakarta Commons Logging)--与slf4j都是日志框架

一、commons-logging的使用
在项目中引入commons-logging-1.2.jar,然后直接调用commons-logging提供的接口打印日志:

import  org.apache.commons.logging.Log;
import  org.apache.commons.logging.LogFactory;

public class JclTest {
    
    private static Log log = LogFactory.getLog(JclTest.class);

    public static void main(String[] args) {
        if (log.isInfoEnabled()) {
            log.info("this is a debug msg!");
        }
    }
}
//执行结果如下:
三月 29, 2019 11:51:55 下午 org.apache.commons.logging.JclTest main
信息: this is a debug msg!

说明:
(1)commons-logging会自动匹配具体的日志实现,按以下顺序查找:
Ⅰ第一,找classpath路径下是否有commons-logging.properties配置文件,找到则按配置文件里面指定的日志实现来具体地打印日志,比如配置文件指定log4j:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4J-Logger
Ⅱ第二,查找系统属性(system property)中是否存在属性org.apache.commons.logging.Log的值,如果有则配置。
Ⅲ第三,查看项目是否引入了log4j,如果有则自动使用其作为日志实现。
Ⅳ第四,如果使用JDK4以上,则自动使用自带的Jdk14Logger。
V第五,略。

(2)上面只是引入commons-logging-1.2.jar,所以最终使用的是上面顺序中的第三个,使用Jdk14Logger来进行日志输出。

(3)其提供的打印日志的方法也比较简单,如下:

    log.fatal(Object message);
    log.fatal(Object message, Throwable t);
    log.error(Object message);
    log.error(Object message, Throwable t);
    log.warn(Object message);
    log.warn(Object message, Throwable t);
    log.info(Object message);
    log.info(Object message, Throwable t);
    log.debug(Object message);
    log.debug(Object message, Throwable t);
    log.trace(Object message);
    log.trace(Object message, Throwable t);

(4)JCL的commons-logging-1.2.jar自己为不同日志实现提供了对接方法,这些类依赖对应的日志实现类:
在这里插入图片描述
二、对比JCL和slf4j两种日志框架(它们都不是日志打印的最终实现,只是一套规范)
为了方便日志打印可以在jul、log4j、logback等等之间切换,所以门面类日志框架体系(如JCL和slf4j)应运而生,为的就是让系统代码使用一种打印日志的API就能对接多种日志打印具体实现。但是日志框架体系如JCL和slf4j又多起来之后,问题又回到了出发点,假如选用了commons-loggin的日志体系,那么想要切换slf4j是不是还是要重新修改代码中的方法?反之也是如此。
所以,在日志框架选型的时候,还是有必要对比两者的优缺点、差异、共同点。
好像是spring使用commons-logging,hibernate使用slf4j,spring-boot使用logback,真的是萝卜青菜各有所爱。
个人认为slf4j更加强大一点,它使用了占位符{},对各个日志实现支持,规范也不错。
继续深入了解各个日志之后,再结合系统要求来做选择吧,这里不再深入。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值