[java]57、不同模块日志
2022-09-14 本文已影响0人
史记_d5da
1、不同模块之间的日志
在实际开发过程中,不同的模块内部实现的日志系统不一定相同,当带有多个日志系统的模块混合在一起的时候,日志系统会变的复杂,甚至产生冲突,因此需要在开发中保持每个模块的日志系统都能够正常运行。
1.1、场景一:
每个模块实现不同的日志
在上述中三个模块的日志系统可以互不影响,独立运行。
1、如果希望统一使用
Logback
:使用Logback
- 排除
Log4j 1.x
、Log4j 2.x
- 增加
Log4j 1.x
转为调用SLF4J
的包:log4j-over-slf4j
- 增加
Log4j 2.x
转为调用SLF4J
的包:log4j-to-slf4j
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.13.3</version>
</dependency>
2、如果都希望使用Log4j 2.x
- 排除
Log4j 1.x
、Logback
- 增加
Log4j 1.x
转为调用SLF4J
的包:log4j-over-slf4j
- 增加
Log4j 2.x
与SLF4J
的适配包:log4j-slf4j-impl
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.3</version>
</dependency>
或者如下的解决方案
Log4j 2.x
- 排除
Log4j 1.x
、Logback
- 增加
Log4j 1.x
转为调用Log4j 2.x
的包:log4j-1.2-api
- 增加
Log4j 2.x
与SLF4J
的适配包:log4j-slf4j-impl
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.3</version>
</dependency>
1.2、场景二:
每个模块都实现了相同的接口,但是接口的日志现实不同
上述中
SLF4J
有3种实现,最后选择其中一种实现覆盖其他实现在其他两种的
pom.xml
中使用
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
统一SLF4J
1.3、日志框架总结
在实际开发过程中,不同
1、log4j-api
:门面接口(log4j 2.x)
2、slf4j-api
:门面接口
3、logback-classic
:实现了slf4j-api门面接口的日志实现框架
4、log4j-core
:实现了log4j-api门面接口的日志实现框架(log4j 2.x)
5、log4j
:log4j 1.x的日志实现框架
6、slf4j-log4j12
:实现了slf4j-api门面接口,它的内部会调用log4j
7、log4j-slf4j-impl
:实现了slf4j-api门面接口,它的内部会调用log4j-core
8、log4j-over-slf4j
:log4j的盗版实现,它的内部会调用slf4j-api
9、log4j-1.2-api
:log4j的盗版实现,它的内部会调用log4j-core
10、log4j-to-slf4j
:log4j-core的盗版实现,它的内部会调用slf4j-api
2、SpringBoot集成日志框架
2.1、SpringBoot日志框架
1、SpringBoot
的日志框架建议
SLF4J
+ Logback
、SLF4J
+ Log4j 2.x
2、SpringBoot
默认集成了Logback
,不用在添加Logback
的依赖,配置文件的位置:
classpatch:logback.xml
-
classpatch:logback-spring.xml
(SpringBoot
推荐)
3、SpringBoot
内置的Logback
默认配置
spring-boot.jar
org/springframework/boot/logging/loback/defaults.xml
2.2、SpringBoot集成Log4j 2.x
1、在pom.xml
文件中添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2、在classpath
下面添加Log4j 2.x
的配置文件
classpatch:log4j2.xml
-
classpatch:log4j2-spring.xml
(SpringBoot
推荐)
2.3、SpringBoot的logging配置
文件logging:
level:
debug-group: debug # 日志组的级别
com.sj.service: debug # 设置日志级别
group: # 定义日志组
debug-group:
- com.sj.controller
config: classpath:log4j2-spring.xml