我想从Log4j 1.2.16迁移到Log4j 2.11。 问题是在我们的项目中,我们有很多扩展Log4j1的类。例如。 XMLayout。我们还有一个UI,允许在运行时配置附加器阈值。
这里有两个问题
Q1:可以在运行时设置所有附加程序级别。如果不是,那是替代方法。如果向每个附加程序添加过滤器,该怎么办?
我唯一能找到的是在这里:How can I change the AppenderRef Level in log4j2 programmatically?
Q2:我想获取记录器的所有附加程序并列出其级别。如何实现?
第3季度:如何重写此类扩展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();
}
}