提交 0260944f 编写于 作者: X xuml

feat: 补充完善JCL的demo

上级 e597a6fb
# Java Log Jcl demo
测试使用JCL输出日志
`JCL`的配置文件为`commons-logging.properties`
## 引入依赖
```xml
<!--添加jcl 依赖-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
```
## Spring Boot环境下的默认处理
在Spring Boot环境中,默认引入了`Spring-jcl` 包,在这个包中有一个`Jcl`的适配器`org.apache.commons.logging.LogAdapter`
在这个适配器里会根据当前运行环境,加载默认的`Jcl` 处理器
```java
static {
if (isPresent("org.apache.logging.log4j.spi.ExtendedLogger")) {
if (isPresent("org.apache.logging.slf4j.SLF4JProvider") && isPresent("org.slf4j.spi.LocationAwareLogger")) {
logApi = LogAdapter.LogApi.SLF4J_LAL;
} else {
logApi = LogAdapter.LogApi.LOG4J;
}
} else if (isPresent("org.slf4j.spi.LocationAwareLogger")) {
logApi = LogAdapter.LogApi.SLF4J_LAL;
} else if (isPresent("org.slf4j.Logger")) {
logApi = LogAdapter.LogApi.SLF4J;
} else {
logApi = LogAdapter.LogApi.JUL;
}
}
```
因此默认的输出使用的`JUL`
```log
[2023-10-26 11:27:44.907] - 45884 信息 [main] --- com.feiyizhan.LogJclTests: 这是info日志...
[2023-10-26 11:27:44.915] - 45884 警告 [main] --- com.feiyizhan.LogJclTests: 这是warn日志...
[2023-10-26 11:27:44.920] - 45884 严重 [main] --- com.feiyizhan.LogJclTests: 这是error日志...
[2023-10-26 11:27:44.920] - 45884 信息 [main] --- com.feiyizhan.LogJclTests: private static class org.apache.commons.logging.LogAdapter$JavaUtilLog
```
## 使用`Log4j` 处理
引入依赖
```xml
<!--引入Log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
```
因为使用有自己的`Spring-jcl`,这个是包是处理`JCL``SLF4J`的,因此如果要修改为`log4j`,则需要排除掉这个包的依赖。
再补充`log4j` 的配置文件`log4j.properties`就可以使用`log4j`输出日志了。
当然也可以在`commons-logging.properties`强制指定`Log4j`
```
org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger
```
```log
2023-10-26 11:38:12 DEBUG (com.feiyizhan.LogJclTests:25) - 这是debug日志...
2023-10-26 11:38:12 INFO (com.feiyizhan.LogJclTests:27) - 这是info日志...
2023-10-26 11:38:12 WARN (com.feiyizhan.LogJclTests:28) - 这是warn日志...
2023-10-26 11:38:12 ERROR (com.feiyizhan.LogJclTests:29) - 这是error日志...
2023-10-26 11:38:12 INFO (com.feiyizhan.LogJclTests:30) - public class org.apache.commons.logging.impl.Log4JLogger
```
## 同时有`Log4j`依赖时,强制使用`JUL` 处理
`commons-logging.properties` 中强制指定`JUL`
```
org.apache.commons.logging.Log = org.apache.commons.logging.impl.Jdk14Logger
```
```log
[2023-10-26 11:41:13.173] - 46792 信息 [main] --- com.feiyizhan.LogJclTests: 这是info日志...
[2023-10-26 11:41:13.175] - 46792 警告 [main] --- com.feiyizhan.LogJclTests: 这是warn日志...
[2023-10-26 11:41:13.175] - 46792 严重 [main] --- com.feiyizhan.LogJclTests: 这是error日志...
[2023-10-26 11:41:13.177] - 46792 信息 [main] --- com.feiyizhan.LogJclTests: public class org.apache.commons.logging.impl.Jdk14Logger
```
\ No newline at end of file
......@@ -27,6 +27,10 @@
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
<exclusion>
<artifactId>spring-jcl</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
......@@ -55,6 +59,13 @@
<version>1.2</version>
</dependency>
<!--引入Log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
......
#org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger
org.apache.commons.logging.Log = org.apache.commons.logging.impl.Jdk14Logger
\ No newline at end of file
log4j.rootLogger=DEBUG,CONSOLE
#### 控制台输出 ####
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
# 输出到控制台
log4j.appender.CONSOLE.Target = System.out
# 指定控制台输出日志级别
log4j.appender.CONSOLE.Threshold = DEBUG
# 默认值是 true, 表示是否立即输出
log4j.appender.CONSOLE.ImmediateFlush = true
# 设置编码方式
log4j.appender.CONSOLE.Encoding = UTF-8
# 日志输出布局
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
# 如果日志输出布局为PatternLayout 自定义级别,需要使用ConversionPattern指定输出格式
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p (%c:%L) - %m%n
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册