Я хочу перейти с 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();
}
}