Разрешение печати в микросекундах с Log4j2 2.11 - PullRequest
0 голосов
/ 27 января 2019

У меня самая странная проблема, когда временное разрешение для ведения журнала в микросекундах не работает должным образом, а в других - нормально.

Описание настройки:

  • Zulu JDK11
  • Gradle 5.1.1 проект
  • Log4j2 2.11.1 зависимости.
  • Spring Boot 2.1.0. Приложение RELEASE

Вот Log4j2Конфигурация XML:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="ERROR" shutdownHook="disable">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                    pattern="%d{yyyy-MM-dd'T'HH:mm:ss,nnnnnn} [%t] %level{length=5} %c{1} -%equals{ |%marker|}{ ||}{} %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Когда я запускаю эту настройку вручную через ./gradlew clean bootRun, я получаю идеальное нас разрешение.

Однако, когда я упаковываю файлы в "толстый" пружинный загрузочный фляга (через ./gradlew clean bootJar и затем запустить его, я получаю доли секунды только миллисекунды.

Конечно, файл log4j2.xml правильно упакован как частьбаночка с пружинной загрузкой.

Я предполагаю, что это как-то связано с проблемами пути к классам, но, ради бога, я не могу понять, что вызывает такое поведение.

Любая помощь / предложения будут оченьрекомендуется.

Ответы [ 3 ]

0 голосов
/ 03 февраля 2019

Jar-файлы Log4j API и реализации упакованы в несколько выпусков.В своей бесконечной мудрости дизайнеры JDK игнорируют это, если вы упакуете jar в другой jar, который не имеет заголовка multi-release: true manifest.Без этого вы не сможете выполнять какую-либо поддержку Java 9+, встроенную в Log4j.

Суть в том, чтобы добавить заголовок multi-release: true к манифесту jar приложения Spring Boot.

0 голосов
/ 10 февраля 2019

ОБНОВЛЕНИЕ : Несмотря на то, что @rgoers был технически прав в своих наблюдениях, добавление флага многократного выпуска в манифест не решило проблему , а не .Оказалось, что это была проблема весенней загрузки 2 в работе, теперь решаемая с помощью весенней загрузки 2.1.2 (возможно, даже на 2.1.1).

Ведение журнала теперь ведет себя правильно, без изменения манифеста.

Дополнительную информацию можно найти здесь - https://github.com/spring-projects/spring-boot/issues/12523

0 голосов
/ 27 января 2019

Следуя документации log4j

Одна особенность 2.11, которую стоит отметить, заключается в том, что метки времени журналов теперь могут иметь точность микросекунды или наносекунды при работе на Java 9.

Вы уверены, что ваше приложение работает под одной и той же JRE в обоих случаях?

...