logback读取spring的属性实现不同环境的日志灵活配置

第一种使用形式——加载指定的配置模块

  1. 如下配置中,<springProfile name=“dev”> 中的name,读取的是spring.profiles.active配置项的值,不设置默认为default。
  2. spring.profiles.active配置项可以配置在application.properties(application.yml)中,此时就是读取的spring配置文件。也可以在jvm参数中设置,-Dspring.profiles.active=dev.
  3. 如下两条的意思是,当spring.profiles.active配置为dev的时候,包裹在其中的部分配置被加载。当spring.profiles.active没有配置,或者配置为default的时候,包裹在其中的日志设置内容被加载。如果有其他环境test、prod、release等,仿照如此配置即可。
  4. 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>

猜你喜欢

转载自blog.csdn.net/u013041642/article/details/107026814