* #1874 Introduce individual ConsoleLogger instance per class - Create ConsoleLoggerFactory from which a separate logger can be created for each class - Allows to support individual log level settings in the future * Fix CodeStyle issue * Replace full class name with import * Update usages after merge from master
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package fr.xephi.authme.output;
|
||||
|
||||
import fr.xephi.authme.ConsoleLogger;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Creates and keeps track of {@link ConsoleLogger} instances.
|
||||
*/
|
||||
public final class ConsoleLoggerFactory {
|
||||
|
||||
private static final Map<String, ConsoleLogger> consoleLoggers = new ConcurrentHashMap<>();
|
||||
private static Settings settings;
|
||||
|
||||
private ConsoleLoggerFactory() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates or returns the already existing logger associated with the given class.
|
||||
*
|
||||
* @param owningClass the class whose logger should be retrieved
|
||||
* @return logger for the given class
|
||||
*/
|
||||
public static ConsoleLogger get(Class<?> owningClass) {
|
||||
String name = owningClass.getCanonicalName();
|
||||
return consoleLoggers.computeIfAbsent(name, ConsoleLoggerFactory::createLogger);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up all loggers according to the properties returned by the settings instance.
|
||||
*
|
||||
* @param settings the settings instance
|
||||
*/
|
||||
public static void reloadSettings(Settings settings) {
|
||||
ConsoleLoggerFactory.settings = settings;
|
||||
ConsoleLogger.initializeSharedSettings(settings);
|
||||
|
||||
consoleLoggers.values()
|
||||
.forEach(logger -> logger.initializeSettings(settings));
|
||||
}
|
||||
|
||||
private static ConsoleLogger createLogger(String name) {
|
||||
ConsoleLogger logger = new ConsoleLogger(name);
|
||||
if (settings != null) {
|
||||
logger.initializeSettings(settings);
|
||||
}
|
||||
return logger;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user