“JCL 入门介绍”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“https://www.bilibili.com/video/BV1iJ411H74S?p=18”的新页面) |
Jihongchang(讨论 | 贡献) |
||
(未显示同一用户的10个中间版本) | |||
第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 | ||
+ | |||
+ | 它是为“所有的 Java 日志实现”提供一个统一的接口,它自身也提供一个日志实现,但是功能非常弱(SimpleLog)。 | ||
+ | |||
+ | 所以一般不会单独使用它。它允许开发人员使用不同的具体日志实现工具:Log4j,JDK 自带的日志(JUL) | ||
+ | |||
+ | JCL 有两个基本的抽象类:Log(基本记录器)和 LogFactory(负责创建 Log 实例)。 | ||
+ | [[文件:JCL 日志系统图示2.png|无|缩略图|568x568像素]] | ||
+ | |||
+ | === 入门示例 使用 JUL 日志实现 === | ||
+ | |||
+ | ==== pom.xml ==== | ||
+ | <syntaxhighlight lang="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> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== JCLTest.java ==== | ||
+ | <syntaxhighlight lang="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"); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | 二月 26, 2023 11:18:44 上午 io.github.jihch.JCLTest testQuick | ||
+ | 信息: hello JCL | ||
+ | </syntaxhighlight>JCL 默认使用 JUL 的日志实现 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 入门示例 使用 log4j日志实现 === | ||
+ | |||
+ | ==== pom.xml ==== | ||
+ | <syntaxhighlight lang="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> | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | 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. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== 说明 ==== | ||
+ | JCL 使用日志实现只需要再引入 log4j 的依赖<syntaxhighlight lang="xml"> | ||
+ | <dependency> | ||
+ | <groupId>log4j</groupId> | ||
+ | <artifactId>log4j</artifactId> | ||
+ | <version>1.2.17</version> | ||
+ | </dependency> | ||
+ | </syntaxhighlight>代码不用变 | ||
+ | |||
+ | ==== 添加 log4j.properties 再测试 ==== | ||
+ | <syntaxhighlight lang="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 | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | [INFO ]0 io.github.jihch.JCLTest.testQuick(JCLTest.java:15) 2023-02-26 11:34:28.189 hello JCL | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 为什么要使用日志门面? === | ||
+ | |||
+ | # 面向接口开发,不再依赖具体的实现类。减少代码的耦合 | ||
+ | # 项目通过导入不同的日志实现类,可以灵活地切换日志框架 | ||
+ | # 统一 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 实例)。
入门示例 使用 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,方便开发者学习和使用
- 统一配置便于项目日志的管理