Документация Log4J2 описывает набор «поисков» (https://logging.apache.org/log4j/2.0/manual/lookups.html#), которые можно использовать для предоставления динамической c информации для конфигурации Log4J2. Один из них помечен «Spring lookup», который предположительно позволяет использовать свойства конфигурации Log4J2 из конфигурации Spring Boot:
Spring Boot Lookup
Spring Boot Lookup извлекает значения Свойства Spring из конфигурации Spring. Этот поиск будет возвращать нулевые значения, пока Spring Boot не инициализирует ведение журнала приложения.
<File name="Application" fileName="application.log">
<PatternLayout>
<pattern>%d %p %c{1.} [%t] $${spring:spring.application.name} %m%n</pattern>
</PatternLayout>
</File>
Этот поиск требует, чтобы в приложение был включен log4j-spring-cloud-config-client.
Изначально я пропустил требование для log4j-spring-cloud-config-client
, поэтому не удивился, что оно не сработало с первого раза.
Итак, я добавил зависимость для клиента весеннего облака и попытался снова.
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-spring-cloud-config-client</artifactId>
<version>2.13.0</version>
</dependency>
Теперь приложение выдает исключение при запуске:
[INFO] --- spring-boot-maven-plugin:2.1.6.RELEASE:start (pre-integration-test) @ mission-planner ---
[INFO] Attaching agents: []
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.apache.logging.log4j.util.PropertiesUtil
at org.apache.logging.log4j.status.StatusLogger.<clinit>(StatusLogger.java:78)
at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:60)
at org.apache.commons.logging.LogAdapter$Log4jLog.<clinit>(LogAdapter.java:155)
at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:194)
at edu.mit.ll.mission_services.service.mission_planner.ApplicationMain.main(ApplicationMain.java:53)