Как я могу проверить, регистрируется ли мое приложение ожидаемым образом с помощью log4j2?

Я пробовал использовать отражение, но в моем случае sl4fj создает окончательный регистратор. Это значит, что я не могу его настроить.

Любой совет?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

если вы используете log4j2 с пружинной загрузкой, вы можете сделать следующее:

тестовый код:

import org.springframework.boot.test.system.CapturedOutput;
import org.springframework.boot.test.system.OutputCaptureExtension;
import static org.assertj.core.api.Assertions.assertThat;

@ExtendWith(OutputCaptureExtension.class)
 class MyClassTest {
    @Test
    void myFunction_whenIDoAThing_thenItDoesNotLog(CapturedOutput output) {
        // given

        ...
        // when
        when(myDependency.doSomething()).thenReturn(something);

        myClass.doSomething();

        // then
        assertThat(output).doesNotContain(AN_EXPECTED_ERROR_MESSAGE);

        verify(myDependency).doSomething();
    }
}

ключом является добавление атрибута Follow и отправка журналов в систему

https://docs.spring.io/spring-boot/api/java/org/springframework/boot/test/system/OutputCaptureExtension.htmlhttps://logging.apache.org/log4j/2.x/manual/appenders.html#ConsoleAppender

конфигурация log4j2:

❯ cat spring-rest/src/test/resources/log4j2-test.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<Configuration status = "warn">
  <Appenders>
    <Console name = "STDOUT" target = "SYSTEM_OUT" follow = "true">
      <PatternLayout pattern = "%m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level = "warn">
      <AppenderRef ref = "STDOUT"/>
    </Root>
  </Loggers>
</Configuration>

Другие вопросы по теме

Предоставление одного ресурса пути к классам для веб-доступа в Spring Boot
Операции сохранения не фиксируются при использовании аннотации @Scheduled
Как исправить эту ошибку: Не удалось выполнить автоматическое подключение. Существует более одного bean-компонента типа UserBusService
Образ Docker с Spring Boot подключается к внешнему Postgres
Spring Security + Keycloak (с самоподписанными сертификатами) – как отключить проверку имени хоста?
Ошибка конфигурации безопасности при обновлении версии приложения весенней загрузки с 2.x.x до 3.3.0
Spring 3 использует сопоставитель объектов для преобразования значения (десериализации) из List<Map<String,Object> в некоторый DTO выдает ошибку для поля Instant
Как я могу распечатать наносекунды в временной метке журнала при входе в Spring Boot 3.3 и Java 17, используя logback или log4j?
Можно ли разместить плагин apm-agent-java внутри JAR-файла приложения?
Доступ запрещен даже при использовании AnonymousAuthenticationFilter