Как получить и установить все уровни приложения в log4j2 - PullRequest
0 голосов
/ 26 ноября 2018

Я хочу перейти с Log4j 1.2.16 на Log4j 2.11.Проблема в том, что в нашем проекте есть много классов, которые расширяют Log4j1.Например, XMLayout.У нас также есть пользовательский интерфейс, который позволяет настраивать пороговое значение appenders во время выполнения.

Вот пара вопросов Q1: Можно установить уровень всех аппендеров во время выполнения.Если нет, то каков альтернативный способ сделать это?Это если добавить фильтр для каждого аппендера?
Единственное, что я могу найти, это здесь: Как программно изменить уровень AppenderRef в log4j2?

Q2: Я хочу получитьвсе приложения логгера и список их уровней. Как я могу это сделать?

Q3: как переписать такие классы, которые расширяют Layouts. Используются ли плагины?

public class SafeXMLLayout extends XMLLayout {

    @Override
    public String format(org.apache.log4j.spi.LoggingEvent le) {
        String rawResult = super.format(le);
        return removeInvalidXMLCharacters(rawResult);
    }

    // Just skips invalid XML characters ...
    private String removeInvalidXMLCharacters(String originalStr) {
        StringBuilder sb = new StringBuilder(originalStr.length());
        for (int i=0; i<originalStr.length(); i++) {
            char charAt = originalStr.charAt(i);
            if (org.apache.xml.utils.XMLChar.isValid(charAt)) {
                sb.append(charAt);
            }
        }
        return sb.toString();
    }
}
...