SpringBoot簡單配置logback

前言

平常自己開發主要聚焦於業務功能的配置,對日誌配置一般關注較少,特此記錄下SpringBoot如何配置簡單的logback,以及相關配置的解釋。

一、對日誌簡單的認知

  • logback和log4j是一個人寫的,功能差不多,你可以用logback也可以用log4j
  • SpringBoot默認使用的日誌框架是logback
  • 日誌級別優先級(從高到低):OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。一般我們開發只會用到ERROR、WARN、INFO、DEBUG這幾個,日誌系統只會打印比當前日記級別高(包含當前配置日誌級別)的日誌,舉個例子,SpringBoot日誌級別默認是INFO,就只會打印ERROR、WARN、INFO三種日誌級別的日誌

二、SpringBoot如何配置?

引入SpringBoot的starter包就包含了logback日誌的jar了,所以不需要增加特定的日誌jar了

1.1 yml配置

logging:
  level:
    root: info
    org.mybatis: warn
    com.alibaba.dubbo: warn
    RocketmqClient: info
  file: logs/logFileName.log

以上配置含義細化

  • logging.level.root: info表示整個項目的默認日誌級別是info
  • org.mybatis: warn,特定包的日誌級別配置,表示org.mybatis包可以打印warn級別的日誌,可以覆蓋整個項目的默認日誌級別Info。也就是說我們可以根據實際需要決定特定jar包的日誌級別,可以避免線上少打或者打印大量無用日誌的情況
  • logging.level.RocketmqClient: info 表明這個RocketmqClient類的日誌級別是Info。可以通過指定包名或者類名設置日誌級別
  • logging.level.file: logs/logFileName.log表示日誌輸出的文件路徑,用於線上查看日誌

1.2 logback-spring.xml配置

文件所放的位置處於yml的同級目錄,SpringBoot會默認加載,也可以通過logging.level.config來指定配置文件,比如logging.level.config: classpath:logback-my-spring.xml

logback-spring.xml文件的配置主要是爲了擴展日誌配置的能力,比如我想根據profile的不同來設置不同的日誌級別、設置日誌文件的滾動策略,比如我只想保留7天內的日誌文件等等

<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
    </appender>
    <springProfile name="default, dev, docker">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        </root>
    </springProfile>

    <springProfile name="test, pre, prod">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        </root>
    </springProfile>


    <logger name="org.springframework.web" level="INFO"/>
    <logger name="com.alibaba.dubbo" level="ERROR"/>
    <logger name="RocketmqClient" level="INFO"/>
</configuration>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章