当前位置:   article > 正文

Springboot 配置 log4j2 时的注意事项

Springboot 配置 log4j2 时的注意事项

感谢博主 https://www.cnblogs.com/fishlittle/p/17950944

依赖

  1. SpringBoot 的 spring-boot-starter/ spring-boot-starter-web 自带的是 logback 日志,若要使用 log4j2 日志,需要引入对应依赖。
  2. logback 日志和 log4j2 日志都是对 slf4j 门面的实现,只能存在一个,且必须存在一个,不存在或者存在多个都会出错。
  3. 因此,在使用 log4j2 日志时,必须要在依赖中把 logback 给 exclude 掉。 并且,使用 log4j2 日志还需要适配器 log4j-slf4j-impl,它跟 SpringBoot 的 starter 自带的 log4j-to-slf4j 是相互冲突的,因此还需要将 log4j-to-slf4j 也 exclude 掉。
  4. 因为 SpringBoot 的 starter 中已经带有 slf4j 门面了,因此无需再引入 slf4j 依赖。

这里推荐 idea 的maven 面板工具,在Dependencies 里能查看jar 间的依赖关系,很不错。

因为 2 的原因,故 springboot-starter 的依赖需要剔除 自身 logback

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-logging</artifactId>
  8. </exclusion>
  9. </exclusions>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-log4j2</artifactId>
  14. </dependency>

注意:很多第三方库中也会包含 logback ,所以也需要剔除。比如 jxls

  1. <dependency>
  2. <groupId>org.jxls</groupId>
  3. <artifactId>jxls</artifactId>
  4. <exclusions>
  5. <exclusion>
  6. <groupId>ch.qos.logback</groupId>
  7. <artifactId>logback-core</artifactId>
  8. </exclusion>
  9. </exclusions>
  10. </dependency>

log4j2.xml(resources目录下)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
  3. <!-- Configuration 后面的 status 用于设置 log4j2 自身内部的信息输出,可以不设置,当设置成 trace 时,可以看到 log4j2 内部各种详细输出-->
  4. <configuration status="INFO">
  5. <!--先定义所有的 appender-->
  6. <appenders>
  7. <!--输出日志信息到控制台-->
  8. <console name="Console" target="SYSTEM_OUT">
  9. <!--控制日志输出的格式-->
  10. <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
  11. </console>
  12. </appenders>
  13. <!--然后定义 logger,只有定义了 logger 并引入的 appender,appender 才会生效-->
  14. <!--root:用于指定项目的根日志,如果没有单独指定 Logger,则会使用 root 作为默认的日志输出-->
  15. <loggers>
  16. <root level="info">
  17. <appender-ref ref="Console"/>
  18. </root>
  19. </loggers>
  20. </configuration>

Springboot 的日志配置

  1. logging:
  2. config: classpath:log4j2.xml

ok 了。

测试

  1. @RestController
  2. public class DemoController {
  3. private final Logger logger = LoggerFactory.getLogger(DemoController.class);
  4. @GetMapping("/test")
  5. public String test(@RequestParam String name){
  6. logger.info(name);
  7. return name;
  8. }
  9. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/811786
推荐阅读
相关标签
  

闽ICP备14008679号