private final Map<LoggerContext, ConcurrentMap<String, Logger>> contextMap =
new WeakHashMap<LoggerContext, ConcurrentMap<String, Logger>>();
public Logger getLogger(String name) {
LoggerContext context = getContext();
ConcurrentMap<String, Logger> loggers = getLoggersMap(context);
if (loggers.containsKey(name)) {
return loggers.get(name);
}
String key = Logger.ROOT_LOGGER_NAME.equals(name) ? LogManager.ROOT_LOGGER_NAME : name;
org.apache.logging.log4j.Logger logger = context.getLogger(key);
if (logger instanceof AbstractLogger) {
loggers.putIfAbsent(name, new SLF4JLogger((AbstractLogger) logger, name));
return loggers.get(name);
}
throw new SLF4JLoggingException("SLF4J Adapter requires base logging system to extend Log4J AbstractLogger");