[java]57、不同模块日志

1、不同模块之间的日志

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

1.1、场景一:

每个模块实现不同的日志


在上述中三个模块的日志系统可以互不影响,独立运行。
1、如果希望统一使用Logback
使用Logback

  • 排除Log4j 1.xLog4j 2.x
  • 增加Log4j 1.x转为调用SLF4J的包:log4j-over-slf4j
  • 增加Log4j 2.x转为调用SLF4J的包:log4j-to-slf4j

    org.slf4j
    log4j-over-slf4j
    1.7.30


    org.apache.logging.log4j
    log4j-to-slf4j
    2.13.3

2、如果都希望使用Log4j 2.x

Log4j 2.x

  • 排除Log4j 1.xLogback
  • 增加Log4j 1.x转为调用SLF4J的包:log4j-over-slf4j
  • 增加Log4j 2.xSLF4J的适配包:log4j-slf4j-impl

    org.slf4j
    log4j-over-slf4j
    1.7.30


    org.apache.logging.log4j
    log4j-slf4j-impl
    2.13.3

或者如下的解决方案


Log4j 2.x
  • 排除Log4j 1.xLogback
  • 增加Log4j 1.x转为调用Log4j 2.x的包:log4j-1.2-api
  • 增加Log4j 2.xSLF4J的适配包:log4j-slf4j-impl

    org.apache.logging.log4j
    log4j-1.2-api
    2.14.0


    org.apache.logging.log4j
    log4j-slf4j-impl
    2.13.3

1.2、场景二:

每个模块都实现了相同的接口,但是接口的日志现实不同


上述中SLF4J有3种实现,最后选择其中一种实现覆盖其他实现
在其他两种的pom.xml中使用


    
        org.apache.logging.log4j
        log4j-core
    

统一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的依赖,配置文件的位置:

  • classpatch:logback.xml
  • classpatch:logback-spring.xmlSpringBoot推荐)

3、SpringBoot内置的Logback默认配置

  • spring-boot.jar
  • org/springframework/boot/logging/loback/defaults.xml
2.2、SpringBoot集成Log4j 2.x

1、在pom.xml文件中添加


    org.springframework.boot
    spring-boot-starter-web
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-log4j2

2、在classpath下面添加Log4j 2.x的配置文件

  • classpatch:log4j2.xml
  • classpatch:log4j2-spring.xmlSpringBoot推荐)
2.3、SpringBoot的logging配置
文件
logging:
  level:
    debug-group: debug # 日志组的级别
    com.sj.service: debug # 设置日志级别
  group: # 定义日志组
    debug-group:
      - com.sj.controller
  config: classpath:log4j2-spring.xml

你可能感兴趣的:([java]57、不同模块日志)