LOG4J2: Отключить "Нет файла конфигурации log4j2 найдено.." при программировании

Я не использую какой-либо файл конфигурации XML, скорее я настраиваю конфигурацию регистратора программно. Регистратор работает правильно, но когда я вызываю первую строку кода ниже, появляется сообщение об ERROR, чтобы сообщить мне, что файл конфигурации не найден, и будет использоваться конфигурация по умолчанию.

Но я не хочу, чтобы это сообщение отображалось на консоли каждый раз, когда я запускал программу, потому что я программно добавляю конфигурацию самостоятельно.

Сообщение:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

Это происходит, когда я вызываю код ниже:

LoggerContext context = (LoggerContext) LogManager.getContext(false);

Или если я сначала запустил корневой журнал:

Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

Есть ли какое-то свойство, которое я могу настроить для отключения этого сообщения от отображения? Или другой подход?

ПРИМЕЧАНИЕ. Я отключил другое уведомление относительно Log4j2 JMX, установив свойство -Dlog4j2.disable.jmx=true.Но я не мог найти этого.

Ответ 1

Добавьте следующее системное свойство, чтобы не показывать это сообщение:

-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=OFF

Альтернативно, и проще:

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.status.StatusLogger;

...

StatusLogger.getLogger().setLevel(Level.OFF);

Ответ 2

Вы можете просто сделать это в своем основном классе.

static {
    StatusLogger.getLogger().setLevel(Level.OFF);
}

Ответ 3

Вы должны реализовать метод инициализации для правильной инициализации конфигураций log4j из кода.

Проверьте раздел "Как настроить log4j2 в коде без файла конфигурации" на странице ниже, которая также содержит исходный код.

http://logging.apache.org/log4j/2.x/faq.html