“JCL 入门介绍”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
 
第1行: 第1行:
 
https://www.bilibili.com/video/BV1iJ411H74S?p=18
 
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
 
全称为 Jakarta Commons Logging(现在叫 The Apache Commons Logging),是 Apache 提供的一个通用日志 API

2023年2月26日 (日) 04:50的最新版本

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 实例)。

JCL 日志系统图示2.png

入门示例 使用 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



为什么要使用日志门面?

  1. 面向接口开发,不再依赖具体的实现类。减少代码的耦合
  2. 项目通过导入不同的日志实现类,可以灵活地切换日志框架
  3. 统一 API,方便开发者学习和使用
  4. 统一配置便于项目日志的管理