Как узнать, какая конфигурация Log4j загружена? - PullRequest
0 голосов
/ 14 июля 2020

Мы используем Log4j (через Slf4j) для ведения журнала.

Наша конфигурация log4j довольно проста:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="Console">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="Console"/>
    </Root>
    <Logger name="net.sf.jsi.rtree.RTree" level="INFO">
      <AppenderRef ref="Console"/>
    </Logger>
  </Loggers>
</Configuration>

Обратите внимание, что root logger установлен на INFO.

Однако мы получаем огромное количество DEBUG логов из сторонней библиотеки (net.sf.jsi). Журналы, которые нас абсолютно не интересуют. Я предполагаю, что где-то в пути к классам есть другая конфигурация Log4j, которая выбирается и устанавливает root logger на DEBUG.

Мой вопрос: как я мог нашел, какая конфигурация фактически загружена и используется log4j?

Обновление:

Я видел этот «возможный дубликат». Однако ответ, предлагающий использовать -Dlog4j.debug, мне не подходит. Я добавил -Dlog4j.debug к аргументам виртуальной машины. Я получаю только:

DEBUG StatusLogger org.slf4j.helpers.Log4jLoggerFactory is not on classpath. Good!
DEBUG StatusLogger Using ShutdownCallbackRegistry class org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry
WARN StatusLogger Multiple logging implementations found: 
Factory: org.apache.logging.log4j.core.impl.Log4jContextFactory, Weighting: 10
Factory: org.apache.logging.slf4j.SLF4JLoggerContextFactory, Weighting: 15
Using factory: org.apache.logging.slf4j.SLF4JLoggerContextFactory

, что для меня недостаточно.

...