logback多環境日誌配置(SpringBoot項目)

使用場景

  線上環境啓動項目時,把程序的日誌輸出到指定的日誌文件中。控制檯中不打印日誌,這樣可以節省磁盤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}是一個變量,我們可以在系統啓動的時候設置這個值,方法與上面“方式一”中的指定啓動環境一樣。

參考:官方說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章