2017-01-13 3 views
2

Есть ли способ удалить appender из регистратора в log4j2 программно?Как удалить appender из регистратора в log4j2 программно?

Сайт говорит «Log4j 2 API не предоставляет методы для добавления, изменения или удаления appenders и фильтров или управлять конфигурацией в любом случае»: https://logging.apache.org/log4j/2.x/manual/configuration.html

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

Спасибо.

+0

Можете ли вы предоставить пример конфигурационного файла и что вы от этого? – sazzad

ответ

-1

Можете ли вы удалить Appender? Да. Тебе следует? Ответ почти всегда отрицательный. Что делать, если LoggerConfig, AsyncAppender или RoutingAppender ссылаются на Appender? Вы получите сообщение об ошибке.

В большинстве случаев вы действительно хотите использовать более умную фильтрацию. Они предназначены для сокращения или исключения количества событий, направляемых в Appender.

0

Существует способ LoggerConfig#removeAppender(String name), который удалит конкретный appender и LoggerConfig#clearAppenders(), который удалит все приставки. Скажем, у вас есть Appender с именем CONSOLE:

final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); 
final Configuration config = ctx.getConfiguration(); 
config.getRootLogger().removeAppender("CONSOLE"); 
ctx.updateLoggers(); 
Смежные вопросы