common-logging、log4j、slf4j、logBack、log4j2 总结

日常Java开发中,常见日志管理的两种搭配是common-logging+log4j或log4j+slf4j,其中common-logging和slf4j 都属于日志接口,log4j是具体的实现类。

1、common-logging介绍

Jakarta  Commons-logging(JCL)是apache最早提供的日志的门面接口。提供简单的日志实现以及日志解耦功能。

  JCL能够选择使用Log4j(或其他如slf4j等)还是JDK Logging,但是他不依赖Log4j,JDK Logging的API。如果项目的classpath中包含了log4j的类库,就会使用log4j,否则就使用JDK Logging。使用commons-logging能够灵活的选择使用那些日志方式,而且不需要修改源代码。(类似于JDBC的API接口)

原理:
    JCL有两个基本的抽象类: Log( 基本记录器 ) 和 LogFactory( 负责创建 Log 实例 ) 。当 commons-logging.jar 被加入到 CLASSPATH之后,它会合理地猜测你想用的日志工具,然后进行自我设置,
用户根本不需要做任何设置。默认的 LogFactory 是按照下列的步骤去发现并决定那个日志工具将被使用的(按照顺序,寻找过程会在找到第一个工具时中止) : ①首先在classpath下寻找commons-logging.properties文件。如果找到,则使用其中定义的Log实现类;如果找不到,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类; ②查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类; ③否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类); ④否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;

org.apache.commons.logging.Log 的具体实现有如下:

---org.apache.commons.logging.impl.Jdk14Logger  使用 JDK1.4 。

---org.apache.commons.logging.impl.Log4JLogger  使用 Log4J 。

---org.apache.commons.logging.impl.LogKitLogger    使用 avalon-Logkit 。

---org.apache.commons.logging.impl.SimpleLog      common-logging 自带日志实现类。

---org.apache.commons.logging.impl.NoOpLog          common-logging 自带日志实现类。它实现了 Log 接口。 其输出日志的方法中不进行任何操作。

Maven依赖:

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

Commons-logging简单日志实现

 1、新建:commons-logging.properties,指定实现类

org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog

2、测试代码

public class TestCommonLog {    
    @Test
    public void test() {        
        Log log=LogFactory.getLog(TestCommonLog.class);    
        log.info("测试信息");
        log.debug("测试信息");
        log.error("测试信息");
    }
}

3、输出结果

[INFO] TestCommonLog - 测试信息
[ERROR] TestCommonLog - 测试信息

 

posted @ 2019-06-21 16:42  珂瑞  阅读(179)  评论(0)    收藏  举报