JCL 入门介绍
跳到导航
跳到搜索
https://www.bilibili.com/video/BV1iJ411H74S?p=18
Apache Commons Logging (previously known as Jakarta Commons Logging or JCL) is a Java-based logging utility and a programming model for logging and for other toolkits.
全称为 Jakarta Commons Logging(现在叫 The Apache Commons Logging),是 Apache 提供的一个通用日志 API
它是为“所有的 Java 日志实现”提供一个统一的接口,它自身也提供一个日志实现,但是功能非常弱(SimpleLog)。
所以一般不会单独使用它。它允许开发人员使用不同的具体日志实现工具:Log4j,JDK 自带的日志(JUL)
JCL 有两个基本的抽象类:Log(基本记录器)和 LogFactory(负责创建 Log 实例)。
入门示例 使用 JUL 日志实现
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.jihch</groupId>
<artifactId>jcl-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<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>
</dependencies>
</project>
JCLTest.java
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
public class JCLTest {
@Test
public void testQuick() {
// 创建日志对象
Log log = LogFactory.getLog(JCLTest.class);
//日志记录输出
log.info("hello JCL");
}
}
二月 26, 2023 11:18:44 上午 io.github.jihch.JCLTest testQuick
信息: hello JCL
JCL 默认使用 JUL 的日志实现
入门示例 使用 log4j日志实现
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>io.github.jihch</groupId>
<artifactId>jcl-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
log4j:WARN No appenders could be found for logger (io.github.jihch.JCLTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
说明
JCL 使用日志实现只需要再引入 log4j 的依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
代码不用变
添加 log4j.properties 再测试
# 指定 RootLogger 顶级父元素默认配置信息
# 指定日志级别=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.SSS} %m%n
[INFO ]0 io.github.jihch.JCLTest.testQuick(JCLTest.java:15) 2023-02-26 11:34:28.189 hello JCL
为什么要使用日志门面?
- 面向接口开发,不再依赖具体的实现类。减少代码的耦合
- 项目通过导入不同的日志实现类,可以灵活地切换日志框架
- 统一 API,方便开发者学习和使用
- 统一配置便于项目日志的管理