Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
求同存异
java-log
提交
5d56d597
J
java-log
项目概览
求同存异
/
java-log
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
java-log
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5d56d597
编写于
10月 27, 2023
作者:
X
xuml
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 完善slf4j-simple-binding-demo
上级
c55c7b57
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
45 addition
and
91 deletion
+45
-91
java-log-slf4j-simple-binding-demo/README.md
java-log-slf4j-simple-binding-demo/README.md
+43
-66
java-log-slf4j-simple-binding-demo/pom.xml
java-log-slf4j-simple-binding-demo/pom.xml
+1
-25
java-log-slf4j-simple-binding-demo/src/test/resources/logging.properties
...simple-binding-demo/src/test/resources/logging.properties
+1
-0
未找到文件。
java-log-slf4j-simple-binding-demo/README.md
浏览文件 @
5d56d597
# Java Log SLF4j simple binding demo
测试
Jul
binding (桥接到 Slf4j )的场景
将原本的
Logback、Jul、Jcl、log4j的输出,统一到sfl4j 并最终使用 slf4j simple
输出日志
要实现这个效果就必须引入对应日志框架的
Slf4j的Over包,将日志重定向到Slf4j。但由于Slf4j
并没有一个具体的日志实现,
所以还得找一个具体的日志实现,这个demo选择的是
Jul
作为最终的日志实现。
测试
slf4j simple
binding (桥接到 Slf4j )的场景
将原本的
`Logback`
、
`Log4j2`
、
`Jul`
、
`Jcl`
、
`log4j`
的输出,统一到
`Sfl4j`
并最终使用
`slf4j-simple`
输出日志
要实现这个效果就必须引入对应日志框架的
`Slf4j`
的Over包,将日志重定向到
`Slf4j`
。但由于
`Slf4j`
并没有一个具体的日志实现,
所以还得找一个具体的日志实现,这个demo选择的是
`slf4j-simple`
作为最终的日志实现。
## 引入对应Over包
```
xml
...
...
@@ -11,12 +11,6 @@
<groupId>
org.slf4j
</groupId>
<artifactId>
jcl-over-slf4j
</artifactId>
<version>
${slf4j.version}
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- lo4j over slf4j -->
...
...
@@ -24,12 +18,6 @@
<groupId>
org.slf4j
</groupId>
<artifactId>
log4j-over-slf4j
</artifactId>
<version>
${slf4j.version}
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- jul over slf4j -->
...
...
@@ -37,17 +25,11 @@
<groupId>
org.slf4j
</groupId>
<artifactId>
jul-to-slf4j
</artifactId>
<version>
2.0.9
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
```
## `Logback` Over 处理
`Logback`
由于使用的就是
`slf4j`
的接口,无法测试出是使用
`Simple`
还是
`Logback`
,因此本次不
测试。
`Logback`
本身就支持
`slf4j`
,因此不需要Over,直接使用就可以,也不需要引入
`Logback`
的依赖包,因此
`Logback`
Over 无法
测试。
## `Jcl` Over 处理
`Jcl`
由于Spring 自己做了一个Over的包
`spring-jcl`
,因此如果需要测试验证,还要把这个包给排除掉。
...
...
@@ -67,8 +49,7 @@
## `Log4j2` Over 处理
`log4j2`
由于有自己的门面接口,无法通过Over方法重定向到
`slf4j`
,只能通过修改代码使用。
将原来的
`LogManager.getLogger(LogLog4j2Tests.class)`
修改为
`slf4j`
的
`LoggerFactory.getLogger(LogBackTests.class)`
方式来改造,
这个由于需要修改代码,修改后的无法测试出是使用了
`Logback`
的实现还是
`log4j2`
的实现,这个在另外一个demo中通过不引入
`Logback`
来测试。
因此在这里不测试
但这样改造后就是直接实现了
`slf4j`
,而不是Over了。
`Log4j2`
Over 无法测试
>注意不要使用`log4j-to-slf4j` 包,这个不是Over包,是把`slf4j`转换成`log4j2`的。
>不然会抛出`org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext` 异常
...
...
@@ -85,8 +66,6 @@ Spring Boot中 Jul 的默认配置文件 `spring-boot-2.7.9.jar!\org\springframe
简单的方法就是在
`logging.properties`
替换
`handlers =java.util.logging.ConsoleHandler`
配置为
`handlers = org.slf4j.bridge.SLF4JBridgeHandler`
> 注意`jul-to-slf4j` 和`slf4j-jdk14` 不能同时引入,因为一个是将`Jul`重定向到`slf4j`,另一个是将`slf4j`的日志输出使用`Jul`来输出。
...
...
@@ -109,52 +88,50 @@ Spring Boot环境下,简单配置`slf4j-simple` 方式就是在`application.pr
默认的日志输出格式相当于
`log4j`
的
`"%r [%t] %level %logger - %m%n"`
## 没有引入对应over依赖包的情况下的输出
日志各自使用各自的输出。
日志各自使用各自的输出。
Spring Boot中当运行环境有
`Log4j`
时,
`Jcl`
的默认使用
`Log4j`
的实现。
```
log
2023-10-2
0 17:05:56
DEBUG (com.feiyizhan.LogJclTests:21) - LogJclTests 这是debug日志...
2023-10-2
0 17:05:56
INFO (com.feiyizhan.LogJclTests:23) - LogJclTests 这是info日志...
2023-10-2
0 17:05:56
WARN (com.feiyizhan.LogJclTests:24) - LogJclTests 这是warn日志...
2023-10-2
0 17:05:56
ERROR (com.feiyizhan.LogJclTests:25) - LogJclTests 这是error日志...
2023-10-2
0 17:05:56
INFO (com.feiyizhan.LogJclTests:26) - LogJclTests public class org.apache.commons.logging.impl.Log4JLogger
[2023-10-2
0 17:05:56.129] - 44036
INFO [main] --- com.feiyizhan.LogJulTests: LogJulTests 这是info日志...
[2023-10-2
0 17:05:56.132] - 44036
INFO [main] --- com.feiyizhan.LogJulTests: LogJulTests public class java.util.logging.Logger
2023-10-2
0 17:05:56
DEBUG (com.feiyizhan.LogLog4jTests:21) - LogLog4jTests 这是debug日志...
2023-10-2
0 17:05:56
INFO (com.feiyizhan.LogLog4jTests:23) - LogLog4jTests 这是info日志...
2023-10-2
0 17:05:56
WARN (com.feiyizhan.LogLog4jTests:24) - LogLog4jTests 这是warn日志...
2023-10-2
0 17:05:56
ERROR (com.feiyizhan.LogLog4jTests:25) - LogLog4jTests 这是error日志...
2023-10-2
0 17:05:56
INFO (com.feiyizhan.LogLog4jTests:26) - LogLog4jTests public class org.apache.log4j.Logger
2023-10-2
0 17:05:56.151
[main] DEBUG LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是debug日志...
2023-10-2
0 17:05:56.15
3 [main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...
2023-10-2
0 17:05:56.153
[main] WARN LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是warn日志...
2023-10-2
0 17:05:56.153
[main] ERROR LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是error日志...
2023-10-2
0 17:05:56.153
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...test
2023-10-2
0 17:05:56.153
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests public class org.slf4j.simple.SimpleLogger
2023-10-2
7 09:47:35
DEBUG (com.feiyizhan.LogJclTests:21) - LogJclTests 这是debug日志...
2023-10-2
7 09:47:35
INFO (com.feiyizhan.LogJclTests:23) - LogJclTests 这是info日志...
2023-10-2
7 09:47:35
WARN (com.feiyizhan.LogJclTests:24) - LogJclTests 这是warn日志...
2023-10-2
7 09:47:35
ERROR (com.feiyizhan.LogJclTests:25) - LogJclTests 这是error日志...
2023-10-2
7 09:47:35
INFO (com.feiyizhan.LogJclTests:26) - LogJclTests public class org.apache.commons.logging.impl.Log4JLogger
[2023-10-2
7 09:47:35.072] - 41064
INFO [main] --- com.feiyizhan.LogJulTests: LogJulTests 这是info日志...
[2023-10-2
7 09:47:35.076] - 41064
INFO [main] --- com.feiyizhan.LogJulTests: LogJulTests public class java.util.logging.Logger
2023-10-2
7 09:47:35
DEBUG (com.feiyizhan.LogLog4jTests:21) - LogLog4jTests 这是debug日志...
2023-10-2
7 09:47:35
INFO (com.feiyizhan.LogLog4jTests:23) - LogLog4jTests 这是info日志...
2023-10-2
7 09:47:35
WARN (com.feiyizhan.LogLog4jTests:24) - LogLog4jTests 这是warn日志...
2023-10-2
7 09:47:35
ERROR (com.feiyizhan.LogLog4jTests:25) - LogLog4jTests 这是error日志...
2023-10-2
7 09:47:35
INFO (com.feiyizhan.LogLog4jTests:26) - LogLog4jTests public class org.apache.log4j.Logger
2023-10-2
7 09:47:35.098
[main] DEBUG LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是debug日志...
2023-10-2
7 09:47:35.10
3 [main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...
2023-10-2
7 09:47:35.104
[main] WARN LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是warn日志...
2023-10-2
7 09:47:35.104
[main] ERROR LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是error日志...
2023-10-2
7 09:47:35.104
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...test
2023-10-2
7 09:47:35.111
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests public class org.slf4j.simple.SimpleLogger
```
## 引入对应over依赖包的情况下的输出
全部统一一种日志输出格式了。
```
log
2023-10-2
0 17:24:37.587
[main] DEBUG LogJclTests - LogJclTests 这是debug日志...
2023-10-2
0 17:24:37.587
[main] INFO LogJclTests - LogJclTests 这是info日志...
2023-10-2
0 17:24:37.587
[main] WARN LogJclTests - LogJclTests 这是warn日志...
2023-10-2
0 17:24:37.587
[main] ERROR LogJclTests - LogJclTests 这是error日志...
2023-10-2
0 17:24:37.587
[main] INFO LogJclTests - LogJclTests public class org.apache.commons.logging.impl.SLF4JLog
2023-10-2
0 17:24:37.591
[main] INFO LogJulTests - LogJulTests 这是info日志...
2023-10-2
0 17:24:37.592
[main] INFO LogJulTests - LogJulTests public class java.util.logging.Logger
2023-10-2
0 17:24:37.598
[main] DEBUG LogLog4jTests - LogLog4jTests 这是debug日志...
2023-10-2
0 17:24:37.598
[main] INFO LogLog4jTests - LogLog4jTests 这是info日志...
2023-10-2
0 17:24:37.598
[main] WARN LogLog4jTests - LogLog4jTests 这是warn日志...
2023-10-2
0 17:24:37.599
[main] ERROR LogLog4jTests - LogLog4jTests 这是error日志...
2023-10-2
0 17:24:37.599
[main] INFO LogLog4jTests - LogLog4jTests public class org.apache.log4j.Logger
2023-10-2
0 17:24:37.599
[main] DEBUG LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是debug日志...
2023-10-2
0 17:24:37.599
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...
2023-10-2
0 17:24:37.599
[main] WARN LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是warn日志...
2023-10-2
0 17:24:37.599
[main] ERROR LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是error日志...
2023-10-2
0 17:24:37.599
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...test
2023-10-2
0 17:24:37.600
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests public class org.slf4j.simple.SimpleLogger
2023-10-2
7 09:56:12.670
[main] DEBUG LogJclTests - LogJclTests 这是debug日志...
2023-10-2
7 09:56:12.670
[main] INFO LogJclTests - LogJclTests 这是info日志...
2023-10-2
7 09:56:12.670
[main] WARN LogJclTests - LogJclTests 这是warn日志...
2023-10-2
7 09:56:12.670
[main] ERROR LogJclTests - LogJclTests 这是error日志...
2023-10-2
7 09:56:12.670
[main] INFO LogJclTests - LogJclTests public class org.apache.commons.logging.impl.SLF4JLog
2023-10-2
7 09:56:12.673
[main] INFO LogJulTests - LogJulTests 这是info日志...
2023-10-2
7 09:56:12.673
[main] INFO LogJulTests - LogJulTests public class java.util.logging.Logger
2023-10-2
7 09:56:12.685
[main] DEBUG LogLog4jTests - LogLog4jTests 这是debug日志...
2023-10-2
7 09:56:12.686
[main] INFO LogLog4jTests - LogLog4jTests 这是info日志...
2023-10-2
7 09:56:12.686
[main] WARN LogLog4jTests - LogLog4jTests 这是warn日志...
2023-10-2
7 09:56:12.686
[main] ERROR LogLog4jTests - LogLog4jTests 这是error日志...
2023-10-2
7 09:56:12.686
[main] INFO LogLog4jTests - LogLog4jTests public class org.apache.log4j.Logger
2023-10-2
7 09:56:12.686
[main] DEBUG LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是debug日志...
2023-10-2
7 09:56:12.686
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...
2023-10-2
7 09:56:12.686
[main] WARN LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是warn日志...
2023-10-2
7 09:56:12.686
[main] ERROR LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是error日志...
2023-10-2
7 09:56:12.686
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests 这是info日志...test
2023-10-2
7 09:56:12.687
[main] INFO LogSlf4jSimpleTests - LogSlf4jSimpleTests public class org.slf4j.simple.SimpleLogger
```
java-log-slf4j-simple-binding-demo/pom.xml
浏览文件 @
5d56d597
...
...
@@ -73,12 +73,6 @@
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-simple
</artifactId>
<version>
${slf4j.version}
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- jcl over slf4j -->
...
...
@@ -86,12 +80,6 @@
<groupId>
org.slf4j
</groupId>
<artifactId>
jcl-over-slf4j
</artifactId>
<version>
${slf4j.version}
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- lo4j over slf4j -->
...
...
@@ -99,25 +87,13 @@
<groupId>
org.slf4j
</groupId>
<artifactId>
log4j-over-slf4j
</artifactId>
<version>
${slf4j.version}
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- jul over slf4j -->
<dependency>
<groupId>
org.slf4j
</groupId>
<artifactId>
jul-to-slf4j
</artifactId>
<version>
2.0.9
</version>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
<version>
${slf4j.version}
</version>
</dependency>
...
...
java-log-slf4j-simple-binding-demo/src/test/resources/logging.properties
浏览文件 @
5d56d597
#handlers =java.util.logging.ConsoleHandler
handlers
=
org.slf4j.bridge.SLF4JBridgeHandler
.level
=
INFO
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录