spring boot 中logback多環境配置
阿新 • • 發佈:2019-01-05
spring boot 配置logback
spring boot自帶了log列印功能,使用的是Commons logging 具體可以參考spring boot log
因此,我們只需要在resources中新增一個logback-spring.xml的logback的配置檔案就可以實現正常的日誌列印了。然而我們的目標是要實現多環境log配置,即本地輸出到控制檯,生產,測試輸出到檔案。
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.springframework.web" level="INFO" />
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示執行緒名,%-5level:級別從左顯示5個字元寬度%msg:日誌訊息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<springProfile name="prod">
<!-- 注意這裡一定要放到springProfile裡, 否則在你本機執行的時候還是會去找相應的檔案 -->
<appender name="FILE" class ="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日誌檔案輸出的檔名-->
<FileNamePattern>/services/logs/spring-boot-example.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日誌檔案保留天數-->
<maxHistory>15</maxHistory>
<totalSizeCap>30GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--日誌檔案最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>500</queueSize>
<appender-ref ref="FILE" />
</appender>
</springProfile>
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="consoleAppender" />
</root>
</springProfile>
<springProfile name="junit">
<root level="INFO">
<appender-ref ref="consoleAppender" />
<appender-ref ref="asyncFileAppender" />
</root>
</springProfile>
<springProfile name="test">
<root level="INFO">
<appender-ref ref="asyncFileAppender" />
</root>
</springProfile>
<springProfile name="pro">
<root level="INFO">
<appender-ref ref="asyncFileAppender" />
</root>
</springProfile>
</configuration>
application.yaml
spring:
profiles:
active: dev
---
server:
port: 8001
spring:
profiles: dev
output:
ansi:
enabled: detect #配置輸出console的ide中的配色,並沒有什麼用
---
server:
port: 8009
spring:
profiles: test
---
server:
port: 8008
spring:
profiles: prod
注意在logback-spring.xml的配置中,如果不把<appender name="FILE></append>
放到<springPofile></springPofile>
中,就算你只是輸出到console, 還是會去建立FILE中設定的log檔案。當然日誌還是在控制檯輸出,並不會寫到log檔案中。這個問題並不僅僅出現在spring boot 中,是logback本身的問題,就算不用spring也會出現這種問題。