package org.bukkit.craftbukkit.util;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
public class ForwardLogHandler extends ConsoleHandler {
private Map<String, Logger> cachedLoggers = new ConcurrentHashMap<String, Logger>();
private Logger getLogger(String name) {
Logger logger = cachedLoggers.get(name);
if (logger == null) {
logger = LogManager.getLogger(name);
cachedLoggers.put(name, logger);
}
return logger;
}
@Override
public void publish(LogRecord record) {
Logger logger = getLogger(String.valueOf(record.getLoggerName())); // See SPIGOT-1230
Throwable exception = record.getThrown();
Level level = record.getLevel();
String message = getFormatter().formatMessage(record);
if (level == Level.SEVERE) {
logger.error(message, exception);
} else if (level == Level.WARNING) {
logger.warn(message, exception);
} else if (level == Level.INFO) {
logger.info(message, exception);
} else if (level == Level.CONFIG) {
logger.debug(message, exception);
} else {
logger.trace(message, exception);
}
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
}