1 logback 配置未读取到 spring context 中的配置
logback-spring.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds">
<!-- 获取配置中的参数 -->
<springProperty scope="context" name="appName" source="spring.application.name" defaultValue="defaultAppName"/>
<springProperty scope="context" name="graylogUrl" source="graylog.url" defaultValue="127.0.0.1"/>
<springProperty scope="context" name="graylogPort" source="graylog.port" defaultValue="12201"/>
...
</configuration>
没有读取到 graylog 相关的配置,日志没有收集到 graylog。
解决办法:加入配置:
#将Apollo配置加载提到初始化日志系统之前
apollo.bootstrap.eagerLoad.enabled=true
2 apollo 客户端 接口无法获取没有发布的 namespace 下的 item 值,apollo api 可以
apollo api
package com.hbte.sharp.demo.apollo;
import com.ctrip.framework.apollo.openapi.client.ApolloOpenApiClient;
import com.ctrip.framework.apollo.openapi.dto.OpenItemDTO;
import com.ctrip.framework.apollo.openapi.dto.OpenNamespaceDTO;
import org.junit.jupiter.api.Test;
/**
* 测试apollo
*
* @author Bruce
* @date 2021/6/23 17:46
*/
public class TestApollo {
private final String token = "abaf1c08cbff987be3db18cfdf0ba303a1a8d0ed";
private final String appId = "test-saas";
private final String portalUrl = "http://192.168.0.213:31502/";
private final String cluster = "company_01";
private final String env = "dev";
private ApolloOpenApiClient getClient() {
return ApolloOpenApiClient.newBuilder().withPortalUrl(portalUrl).withToken(token).build();
}
// 可以获取没有发布的 namespace
@Test
public void testNonPublishNamespace() {
OpenNamespaceDTO demo = getClient().getNamespace(appId, env, cluster, "demo");
System.out.println(demo);
}
// 可以获取没有发布的 item
@Test
public void testNonPublishItem() {
OpenItemDTO item = getClient().getItem(appId, env, cluster, "demo", "name");
System.out.println(item);
}
// 不能获取不存在的 namespace, 404 错误
@Test
public void testNonExistsNamespace() {
OpenNamespaceDTO demo = getClient().getNamespace(appId, env, cluster, "demo11");
System.out.println(demo);
}
// 不能获取不存在的 item, 直接是 null,不报错
@Test
public void testNonExistsItem() {
OpenItemDTO item = getClient().getItem(appId, env, cluster, "demo", "server.port");
System.out.println(item);
}
}
apollo client:
注意: 属于 'company_01' 集群的实例只会使用 'company_01' 集群(当前页面)的配置,只有当对应namespace在当前集群没有发布过配置时,才会使用default集群的配置。