use of org.apache.log4j.varia.LevelMatchFilter in project knime-core by knime.
the class NodeLogger method updateLog4JKNIMELoggerLevel.
/**
* Adjusts log level of 'knime' loggers so that it matches the minimum level of all registered appenders.
* Called after initialization and after the log level is changed for individual appenders.
*/
private static void updateLog4JKNIMELoggerLevel() {
final Logger rootLogger = LogManager.getRootLogger();
// by default this is 'ERROR' but may be changed in log4j.xml
Level minimumLevel = rootLogger.getLevel();
for (@SuppressWarnings("unchecked") Enumeration<Appender> appenderEnum = rootLogger.getAllAppenders(); appenderEnum.hasMoreElements(); ) {
Appender next = appenderEnum.nextElement();
for (Filter filter = next.getFilter(); filter != null; filter = filter.getNext()) {
Level l = null;
if (filter instanceof LevelMatchFilter) {
l = OptionConverter.toLevel(((LevelMatchFilter) filter).getLevelToMatch(), Level.FATAL);
} else if (filter instanceof LevelRangeFilter) {
l = ((LevelRangeFilter) filter).getLevelMin();
}
if (l != null && minimumLevel.isGreaterOrEqual(l)) {
minimumLevel = l;
}
}
}
final Level minimumLevelFinal = minimumLevel;
synchronized (LOGGERS) {
knownLoggerPrefixes.stream().map(LogManager::getLogger).forEach(l -> l.setLevel(minimumLevelFinal));
}
}
Aggregations