Инициализация Spring Boot Log с помощью Spring Cloud Kubernetes

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 не был инициализирован в момент инициализации ведения журнала.


person Filip    schedule 20.10.2020    source источник


Ответы (1)


Наконец, проблема заключалась в том, что переменная ENV SPRING_CONFIG_ADDITIONAL_LOCATION была установлена ​​в папку, а не в файл в контейнере.

Локально в Windows установка «SPRING_CONFIG_ADDITIONAL_LOCATION» для файла или папки, похоже, работает, но в образе Docker (RH linux) это имеет значение.

Если в качестве SPRING_CONFIG_ADDITIONAL_LOCATION указана папка, значения вложенных файлов .properties игнорируются.

Я могу воспроизвести (исправить) проблему, изменив файл докера:

ENV SPRING_CONFIG_ADDITIONAL_LOCATION="/mnt/properties/application.properties"

to

ENV SPRING_CONFIG_ADDITIONAL_LOCATION="/mnt/properties/"
person Filip    schedule 21.10.2020