使用場景
線上環境啓動項目時,把程序的日誌輸出到指定的日誌文件中。控制檯中不打印日誌,這樣可以節省磁盤IO資源。而在本地啓動時,把日誌直接輸出到控制檯即可,方便排查問題。 此時,就需要根據不同的環境,使用不同的日誌輸出策略。
方式一:springProfile標籤
在同一份日誌配置文件中,編寫指定的日誌輸出策略。
1. logback-spring.xml文件
在springProfile標籤內編寫日誌輸出規則,標籤中的name屬性值就是環境的編碼。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="logback_app_name" value="jtest/springboot" />
<property name="LOG_PATH" value="${user.home}/${logback_app_name}/logs" />
<!-- 1.控制檯輸出日誌 ConsoleAppender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默認配置爲PatternLayoutEncoder -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}---%magenta([%thread])---%-5level---%blue([%c])---%green([%L])---[%msg]%n</pattern>
</encoder>
</appender>
<!-- 2.輸出到文件 -->
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--文件路徑:可使用ognl-->
<fileNamePattern>${LOG_PATH}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!--每個文件最大100MB;保存60天;總文件最多20GB-->
<maxFileSize>100MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}---%magenta([%thread])---%-5level---%blue([%c])---%green([%L])---[%msg]%n</pattern>
</encoder>
</appender>
<!-- 線上環境,日誌配置 -->
<springProfile name="production">
<root level="info">
<!--日誌輸出到文件-->
<appender-ref ref="rollingFile"/>
</root>
</springProfile>
<!-- 本地、開發環境,日誌配置 可以寫logback支持的所有節點 -->
<springProfile name="local,dev">
<root level="INFO">
<!--控制檯日誌:生產環境建議關掉-->
<appender-ref ref="STDOUT" />
</root>
</springProfile>
</configuration>
在springProfile標籤中,可以編寫任何logback原生支持的標籤。
2. 指定啓動環境
兩種指定啓動環境的方式:
- 在jvm啓動參數中加入:-Dspring.profiles.active=環境編碼 (推薦)
如:-Dspring.profiles.active=local - 設置屬性值:spring.profiles.active=環境編碼
可以在application.properties或者application.yml中指定,如在application.properties文件中指定:
這種硬編碼方式,發佈在不同的環境,需要修改這個屬性值。spring.profiles.active=local
方式二:指定日誌配置文件
可以根據運行環境的不同,指定加載指定的日誌配置文件。
1. 設置logging.config屬性
Springboot中設置屬性值,一般在application.properties或者application.yml文件中設置。
在application.yml中指定日誌配置文件的路徑
logging:
config: classpath:logback-spring-${spring.profiles.active}.xml
此時系統就會加載logback-spring-${spring.profiles.active}.xml這個日誌配置文件。
可以看到${spring.profiles.active}是一個變量,我們可以在系統啓動的時候設置這個值,方法與上面“方式一”中的指定啓動環境一樣。
參考:官方說明