SpringBoot日志配置
SpringBoot日志配置
SpringBoot可以使用的日志框架有log4j(从1.4.0之后不再包含在发行包中)、log4j2和logback(默认),本文将介绍如何配置三种日志框架来记录日志,至于三种日志框架的详细配置不在本文赘述.
logback
SpringBoot的理念:约定优于配置,SpringBoot工程如不做配置默认使用logback记录日志,而且控制台日志采用多彩格式,可以通过修改application.properties(yml)来调整日志配置,如:级别、文件、格式等简单的配置,实际项目中不会用默认的配置,而是在resources下创建logback.xml对日志进行详尽配置,如果你不想叫logback.xml也可以,但你需要在application.properties(yml)中指定日志配置文件,如:
# Logger config
logging:
config: classpath:logback-dev.xml
上面的配置指定了logback的配置文件为classpath下的logback-dev.xml
log4j2
log4j2与log4j的作者为同一个人,log4j2为重构产品性能更好,它和log4j不是一回事,并不兼容log4j,所以项目中用的log4j想升log4j2的条件是:在定义logger时使用的是slf4j的logger而不是log4j的logger,否则就继续用log4j吧.
要在SpringBoot中使用log4j2需要做如下配置,修改pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除默认日志配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入log4j2依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
pom.xml文件修改完成后,SpringBoot使用的就是log4j2了,还是不用创建日志配置文件,但实际中不会这样去用。在resources下创建log4j2.xml作为日志的配置,当然也可以不叫log4j2.xml,修改方法同logback中的例子。
log4j
使用SpringBoot还用log4j记录日志的情况不多?除非你的项目中依赖了较老的二方库或三方库且代码中的logger使用的不是slf4j,但又要记录他们的日志,那只能勉强使用log4j.PS:SpringBoot支持log4j自动配置的最后一个版本为1.3.8,从1.4.0之后就移除了log4j包的自动配置,所以修改pom.xml文件,如下:
SpringBoot版本<=1.3.8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除默认日志配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入log4j依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
SpringBoot版本>=1.4.0
spring-boot-starter-log4j最后一个版本是1.3.8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除默认日志配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入log4j依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
由于SpringBoot从1.4.0之后移除了log4j的自动配置,所以当你的SpringBoot版本>=1.4.0那么你必须在resources下创建log4j.properties,否则控制台将不打印任何日志同时给出如下警告:
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
特别注意
由于新版本SpringBoot默认不再支持log4j的自动配置,所以也不支持自定义日志配置文件名称与路径,只能将log4j.properties放置到resources下才生效.