LogBack 默認集成在 Spring Boot 中,是基于 Slf4j 的日志框架。默認情況下 Spring Boot 是以 INFO 級別輸出到控制臺。
它的日志級別是:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF
配置
LogBack 可以直接在 Application.properties 或 application.yml 中配置,但僅支持一些簡單的配置,復雜的文件輸出還是需要配置在 xml 配置文件中。配置文件可命名為 logback.xml , LogBack 自動會在 classpath 的根目錄下搜索配置文件,不過 Spring Boot 建議命名為 logback-spring.xml,這樣會自動引入 Spring Boot 一些擴展功能。
如果需要引入自定義名稱的配置文件,需要在 Spring Boot 的配置文件中指定,如:
logging: config: classpath:logback-spring.xml
同時 Spring Boot 提供了一個默認的 base.xml 配置,可以按照如下方式引入:
<?xml version="1.0" encoding="UTF-8"?><configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/></configuration>
base.xml 提供了一些基本的默認配置以及在控制臺輸出時的關鍵字配色,具體文件內容可以看這里,可以查看到一些常用的配置寫法。
詳細配置
變量
可以使用 <property> 來定義變量:
<property name="log.path" value="/var/logs/application" />
同時可以引入 Spring 的環境變量:
<property resource="application.yml" /><property resource="application.properties" />
推薦使用 <springProperty>,相比 <property> 提供了 scope 和 defaultValue:
<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/>
所有的變量都可以通過 ${} 來調用。
輸出到控制臺
<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%.-1level|%-40.40logger{0}|%msg%n</pattern> </encoder> </appender> <logger name="com.mycompany.myapp" level="debug" /> <logger name="org.springframework" level="info" /> <logger name="org.springframework.beans" level="debug" /> <root level="warn"> <appender-ref ref="console" /> </root></configuration>
輸出到文件
<property name="LOG_FILE" value="LogFile" /><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_FILE}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每日歸檔日志文件 --> <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.gz</fileNamePattern> <!-- 保留 30 天的歸檔日志文件 --> <maxHistory>30</maxHistory> <!-- 日志文件上限 3G,超過后會刪除舊的歸檔日志文件 --> <totalSizeCap>3GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder></appender>
多環境配置
LogBack 同樣支持多環境配置,如 dev 、 test 、 prod
<springProfile name="dev"> <logger name="com.mycompany.myapp" level="debug"/></springProfile>
啟動的時候 JAVA -jar xxx.jar --spring.profiles.active=dev 即可使配置生效。
如果要使用 Spring 擴展的 profile 支持,配置文件名必須命名為 LogBack_Spring.xml,此時當 application.properties 中指定為 spring.profiles.active=dev 時,上述配置才會生效。
備注
如需手動配置logback依賴,則pom.xml增加如下:
https://mvnrepository.com/artifact/ch.qos.logback/logback-classic【可選擇需要的版本】
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version></dependency>
我的parttern配置如下:<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--><pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} %L - %msg%n</pattern>
來源
https://weyunx.com/2019/02/01/springboot-logback/
https://segmentfault.com/a/1190000018323081