JCL学习
目录
1 前言
JCL是Apache提供的一个通用日志API。它是为所有“Java日志实现”提供一个统一的接口,它自身也提供一个日志的实现(SimpleLog),但是功能非常脆弱。但是我们一般都使用不同的日志实现工具:Log4j,jdk自带的日志(JUL)
JCL有两个基本的抽象类:Log(基本记录器)和LogFactory(负责创建Log实例)
2 简单介绍

如果我们项目中引入了JCL日志门面,那么我们不引用其他日志实现的情况下,它就会默认引用jdk本身的jdk14实现。如果引用了log4j就会使用自动引用log4j的实现。这样我们的应用只需要去关注这个JCL日志门面,而不用再去关注它底层具体的实现了,不过JCL日志门面底层只包含了部分日志框架,Apache已经在2014年停止维护了。又开发了一种更加方便高效的日志门面技术slf4j,这个我们在下篇中会讲到。
3 代码演示
引入jcl相关依赖:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
当项目引用jcl依赖和junit依赖时:进行测试
测试类:
@Test
public void test1(){
//获取log日志记录器对象
Log log = LogFactory.getLog(JclTest.class);
log.info("hello jcl");
}
测试结果:

由此我们发现,在项目中只引入了jcl依赖,没有引入其他具体日志实现的情况下(其实这里会自动引入jdk自带的jdk14日志依赖)会进行正常的日志打印输出。
当我们在项目中引入了log4j的依赖时
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
再次进行测试会提示我们没有没有初始化系统配置:

此时配置log4j的配置文件:
#指定日志级别=trace,使用的appender为 = console
log4j.rootLogger = trace,console
#指定控制台日志输出的appender
log4j.appender.console = org.apache.log4j.ConsoleAppender
#指定消息格式 layout
log4j.appender.console.layout = org.apache.log4j.PatternLayout
#指定消息格式的内容
log4j.appender.console.layout.conversionPattern = [%-10p]%r %l %d{yyyy-MM-dd HH:mm:ss} %m%n
再次进行测试:

可以发现它会按照我们配置的log4j配置文件的要求进行输出。

浙公网安备 33010602011771号