Настраиваемый уровень журнала при весенней загрузке с использованием log4j2 - PullRequest
1 голос
/ 19 апреля 2020

Короче говоря: я не могу настроить пользовательский уровень для работы с весенней загрузкой.

с использованием log4j не требуется; Inte rnet в основном указал мне в этом направлении.

У меня есть следующие проблемы:

1 - добавление log4j2 в проект

Я добавил стартер log4j2 к зависимостям :

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
 </dependency>

... и исключенный logback из spring-boot-starter-parent, как упоминалось во всех руководствах:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

.. затем я добавляю свойство logging.config: userstream/src/main/resources/log4j2.xml указывая на то, где я храню конфигурацию log4j2.

2 Конфигурирование log4j2 (поскольку я понятия не имею - сложно!)

я понял, что я начинаю просто, потому что то, что я хочу, это просто ОДИН дополнительный уровень логирования называемый «BUSINESS», чтобы регистрировать события, которые не являются WARN, но также и не INFO:

<?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <CustomLevels>
            <CustomLevel name="BUSINESS" intLevel="850" />
        </CustomLevels>
    </Configuration>

... (теперь ПОМОГИТЕ мне, пожалуйста - , что мне нужно настроить здесь, чтобы запустить его? )

3 Вызов (должен работать так, как сейчас, но сейчас не работает!)

private static final Logger LOGGER = LogManager.getLogger(UserStreamApplication.class);
 ....
LOGGER.log(Level.forName("BUSINESS", 850), "mystreamFunction called by user"+ uid);

Запускать это вверх-вниз с часов , каждая конфигурация выглядит по-разному, и каждый учебник имеет субъективно другой подход. Не хочу связываться с fileappenders и logformats et c. Просто хочу иметь уровень между INFO и WARN, который я могу использовать. KISS!

Я прошу у вас ветеранов-воинов log4j и суперзвезд весенней загрузки!

1 Ответ

2 голосов
/ 19 апреля 2020

Элемент 1 выглядит правильно, за исключением того, что если ваша конфигурация логирования будет внутри вашего приложения с именем log4j2. xml, то вам не нужно добавлять logging.config в вашу конфигурацию. Если вы это сделаете, на него следует ссылаться с помощью URL-адреса classpath, как в logging.config: classpath: log4j2-myapp. xml.

Для элемента 2 вы не указали, куда хотите, чтобы он регистрировался. Простейшая конфигурация будет

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <CustomLevels>
      <CustomLevel name="BUSINESS" intLevel="850" />
    </CustomLevels>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

. Логирование, как вы его закодировали, выглядит правильно. Тем не менее, «Бизнес» является нечетным названием для уровня, так как уровни обычно для относительной важности события. Бизнес больше напоминает маркер, который может применяться на нескольких уровнях.

...