Spring Boot lookup для Log4J2 не работает - PullRequest
0 голосов
/ 20 февраля 2020

Документация 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)
...