[java]57、不同模块日志

2022-09-14  本文已影响0人  史记_d5da

1、不同模块之间的日志

在实际开发过程中,不同的模块内部实现的日志系统不一定相同,当带有多个日志系统的模块混合在一起的时候,日志系统会变的复杂,甚至产生冲突,因此需要在开发中保持每个模块的日志系统都能够正常运行。

1.1、场景一:

每个模块实现不同的日志


在上述中三个模块的日志系统可以互不影响,独立运行。
1、如果希望统一使用Logback
使用Logback
<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 2.x
<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
<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 + LogbackSLF4J + Log4j 2.x
2、SpringBoot默认集成了Logback,不用在添加Logback的依赖,配置文件的位置:

3、SpringBoot内置的Logback默认配置

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的配置文件

2.3、SpringBoot的logging配置
文件
logging:
  level:
    debug-group: debug # 日志组的级别
    com.sj.service: debug # 设置日志级别
  group: # 定义日志组
    debug-group:
      - com.sj.controller
  config: classpath:log4j2-spring.xml
上一篇下一篇

猜你喜欢

热点阅读