第一种使用形式——加载指定的配置模块
- 如下配置中,<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>