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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM