springboot将日志得一些配置放到apollo配置中心

在正式项目中我们一般不同环境下配置不一样,不同项目下日志配置级别也不一样或者名称也不一样这个时候就需要定义一些变量

那么如何把变量放到配置中心去呢?

有人会说直接放上去不就好了。好,当你直接放上去得时候你会发现你得启动日志全不见了,或者变量也不见了

这是因为springboot 加载logback 时间早与加载 apollo拉取配置。

知道问题得症结所在我们就可以对症下药了。

肯定是要让apollo拉取配置时间早与 logback 得加载。怎么做到呢?

一、可以在入口函数application.main 先初始化运行apollo客户端

@SpringBootApplication(exclude = {FreeMarkerAutoConfiguration.class})
@EnableEurekaClient
@EnableApolloConfig
public class ServiceDemoApplication {

    public static void main(String[] args){
        Config config = ConfigService.getAppConfig();
        final String LOG_PATH="logging.path";
        final String PROFILES_ACTIVE="spring.profiles.active";
        final String LOG_NAME="logging.name";
        final String APPLICATION_NAME="spring.application.name";
        System.setProperty(PROFILES_ACTIVE,config.getProperty(PROFILES_ACTIVE, "prod"));
        System.setProperty(LOG_PATH,config.getProperty(LOG_PATH, "/logs"));
        System.setProperty(LOG_NAME,config.getProperty(APPLICATION_NAME, "UNDEFINED"));
        SpringApplication.run(ServiceDemoApplication.class, args);
    }
}

二、可以将logback-spring.xml改个名字,logback-xxx.xml 然后在配置中心指定logging.config=classpath:logback-xxx.xml

这样也可以让配置中心加载早与日志配置加载。

 

 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <SpringProperty scope="context" name="logPath" source="logging.path"/>
    <SpringProperty scope="context" name="logName" source="logging.name"/>

    <!-- 测试环境+开发环境. 多个使用逗号隔开. -->
    <springProfile name="test,dev">

        <!--输出到控制台-->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        <!--按天生成日志-->
        <appender name="logFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <Prudent>true</Prudent>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <FileNamePattern>
                  ${logPath}/${logName}-%d{yyyy-MM-dd}.%i.log
                </FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>15</MaxHistory>
                <maxFileSize>10MB</maxFileSize>
            </rollingPolicy>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>

        <logger name="org.springframework.boot" level="debug" additivity="false">
            <appender-ref ref="console"/>
            <appender-ref ref="logFile" />
        </logger>

        <logger name="root" level="info" additivity="false">
            <appender-ref ref="console"/>
            <appender-ref ref="logFile" />
        </logger>

    </springProfile>


    <springProfile name="prod">
        <!--按天生成日志-->
        <appender name="logFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <Prudent>true</Prudent>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <FileNamePattern>
                    ${logPath}/${logName}-%d{yyyy-MM-dd}.%i.log
                </FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>15</MaxHistory>
                <maxFileSize>10MB</maxFileSize>
            </rollingPolicy>
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        <logger name="root" level="error" additivity="false">
            <appender-ref ref="logFile" />
        </logger>
        <logger name="org.springframework.boot" level="error" additivity="false">
            <appender-ref ref="logFile" />
        </logger>
    </springProfile>

</configuration>

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值