第一種使用形式——加載指定的配置模塊
- 如下配置中,<springProfile name=“dev”> 中的name,讀取的是spring.profiles.active配置項的值,不設置默認爲default。
- spring.profiles.active配置項可以配置在application.properties(application.yml)中,此時就是讀取的spring配置文件。也可以在jvm參數中設置,-Dspring.profiles.active=dev.
- 如下兩條的意思是,當spring.profiles.active配置爲dev的時候,包裹在其中的部分配置被加載。當spring.profiles.active沒有配置,或者配置爲default的時候,包裹在其中的日誌設置內容被加載。如果有其他環境test、prod、release等,仿照如此配置即可。
- name後面還可以跟表達式,例如;表示當前環境設置的不是dev的條件。
<springProfile name="dev">
<logger name="com.su.flux" level="info" additivity="false">
<appender-ref ref="stdout" />
</logger>
</springProfile>
<springProfile name="default">
<logger name="com.su.flux" level="info" additivity="false">
<appender-ref ref="infoAppender" />
</logger>
</springProfile>
第二種使用形式——讀取spring配置文件中的值:
在logback.xml中增加springProperty這一行讀取spring配置文件中的log.fileName配置項,就可以在下面使用${}的形式引用這個變量了。
<!-- 配置參數logFile讀取application.yml中的log.fileName屬性,如果沒有配置,默認info -->
<springProperty scope="context" name="logFileName" source="log.fileName" defaultValue="info" />
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LogHome}/info/${logFileName}.log</file>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level><!--生產環境可以級別設置成INFO或者更高,調試環境下設置成DEBUG-->
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LogHome}/temp/info/${logFileName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>15</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${LogPattern}</pattern>
<charset>utf-8</charset>
</encoder>
</appender>