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下才生效.
