Spring Boot 2.2.6-版本
在我的application.yml
中,我有这行代码:
logging.config: classpath:my-logback-config.xml
这很好用,spring很好地配置了它。
在我的my-logback-config.xml
中有这样一行:
<springProperty name="LOG_HOST" source="config.logHost" />
<springProperty name="LOG_PORT" source="config.logPort" />
同样,这也很有效,它从外部配置文件中获取值,该文件在ENV变量中定义
SPRING_CONFIG_ADDITIONAL_LOCATION=file:/my-env.properties
但是当我启用Spring Cloud Kubernetes时,这将失败,并显示一个UnknowHostException:"LOG_HOST_IS_UNDEFINED" cannot be resolved.
( LOG_HOST
的值用于设置网络附加器)
为什么开启Spring Cloud Kubernetes会改变日志初始化的行为?
似乎还没有加载来自SPRING_CONFIG_ADDITIONAL_LOCATION的值。
我不能从configMap加载这个值,因为在初始化日志的时候Spring Cloud Kubernetes还没有初始化。
发布于 2020-10-22 04:12:19
最后,问题是ENV var SPRING_CONFIG_ADDITIONAL_LOCATION
被设置为文件夹,而不是容器上的文件。
在本地,在windows上,将'SPRING_CONFIG_ADDITIONAL_LOCATION‘设置为文件或文件夹似乎是可行的,但在Docker镜像(RH linux)中,这是有影响的。
将SPRING_CONFIG_ADDITIONAL_LOCATION
设置为文件夹时,将忽略封闭的".properties“文件的值。
我可以通过更改我的docker文件来重现(修复)这个问题:
ENV SPRING_CONFIG_ADDITIONAL_LOCATION="/mnt/properties/application.properties"
至
ENV SPRING_CONFIG_ADDITIONAL_LOCATION="/mnt/properties/"
https://stackoverflow.com/questions/64453554
复制相似问题