美文网首页
[java]57、不同模块日志

[java]57、不同模块日志

作者: 史记_d5da | 来源:发表于2022-09-14 23:22 被阅读0次

    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
    <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
    • 排除Log4j 1.xLogback
    • 增加Log4j 1.x转为调用SLF4J的包:log4j-over-slf4j
    • 增加Log4j 2.xSLF4J的适配包: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.xLogback
    • 增加Log4j 1.x转为调用Log4j 2.x的包:log4j-1.2-api
    • 增加Log4j 2.xSLF4J的适配包: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 + 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文件中添加

    <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.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、不同模块日志

          本文链接:https://www.haomeiwen.com/subject/xwpfortx.html