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