用的是Spring Boot默认的LogBack。
事实上,除了使用默认的LogBack,Spring Boot还可以使用Log4j、Log42等作为自己的日志系统。今天就那Log4j2来举例,说明Spring Boot是如何集成其他日志系统的。
添加jar包依赖
上篇提到过,Spring Boot默认使用LogBack,但是我们没有看到显示依赖的jar包,其实是因为所在的jar包spring-boot-starter-logging都是作为spring-boot-starter-web或者spring-boot-starter依赖的一部分。
如果这里要使用Log4j2,需要从spring-boot-starter-web中去掉spring-boot-starter-logging依赖,同时显示声明使用Log4j2的依赖jar包,具体如下
<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> 这里顺便插一句,上面的依赖中,我们看到并没有声明版本,这是因为我在项目的父级pom文件中引入了dependencyManagement。
大致说下,我们常见的dependency标签是用来引入需要依赖的jar用的。而dependencyManagement并不能起到同样的作用,它的作用可以用来声明版本规范。当在父级pom声明某个版本的依赖时,如果子pom所在项目并没有用到的话,是不会依赖这个声明的jar包的,需要在子pom主动添加依赖才生效,这个父级pom中的dependencyManagement是用来做统一版本的。
具体看rome项目中的父级pom文件配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="upload/201809081058548412.gif" style="border: 0px; max-width: 900px; height: auto; margin: 10px;" alt="" />但是如果我们注释掉application.properties中的logging.config= classpath:log4j2.xml,运行SpringBootDemoApplication

可以看出没有建立关联,所以log4j2.xml的配置也没有生效,此时Spring Boot的启动日志没有打印到控制台上。
注意,这里有个“潜规则”。如果想在application.properties中注释掉和配置文件的关系前提下仍然能读取到配置文件的信息,可以这样做
将log4j2.xml重命名为log4j2-spring.xml,这样运行SpringBootDemoApplication也是可以正常按照配置打印日志信息的。

自定义日志配置
根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
-
Logback: logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
-
Log4j: log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
-
Log4j2: log4j2-spring.xml, log4j2.xml
-
JDK (Java Util Logging): logging.properties
OK,Spring Boot有关日志配置的介绍就到此为止了,有问题下方留言一起讨论。
项目代码地址
https://github.com/DMinerJackie/rome
请记住这个地址,后面可能很多文章的项目代码都会集中到这个项目。
取名rome(罗马),源于谚语Rome was not built in one day。翻译成中文就是我个人很喜欢的“不积跬步无以至千里,不积小流无以成江海”。
没有哪一次commit能一步到位建成罗马,但是都是让现实越来越靠近梦想!
项目的目录划分采用《没做过大项目,但我会建大项目》介绍的“大项目”结构,在每个module中都会有README.md,其主要记录了网上一些较好的参考资料以及在项目module主题遇到的问题,方便后续翻阅。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。https://www.cnblogs.com/bigdataZJ/p/spring-boot-log4j2.html
