[New] Set DebugLogger in ConfigSystem

Old Abstract Plugin Framework functionality did this differently,
but now this falls on the hands of developers to not limit the settings.
This commit is contained in:
Rsl1122 2018-10-03 20:43:20 +03:00
parent c4bf9a500f
commit 6bb24c3903

View File

@ -9,12 +9,16 @@ import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.file.PlanFiles; import com.djrapitops.plan.system.file.PlanFiles;
import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.theme.Theme; import com.djrapitops.plan.system.settings.theme.Theme;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.logging.L; import com.djrapitops.plugin.logging.L;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.logging.debug.*;
import com.djrapitops.plugin.logging.error.ErrorHandler; import com.djrapitops.plugin.logging.error.ErrorHandler;
import com.djrapitops.plugin.utilities.Verify;
import javax.inject.Singleton; import javax.inject.Singleton;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/** /**
* System for Config and other user customizable options. * System for Config and other user customizable options.
@ -27,17 +31,20 @@ public abstract class ConfigSystem implements SubSystem {
protected final PlanFiles files; protected final PlanFiles files;
protected final PlanConfig config; protected final PlanConfig config;
protected final Theme theme; protected final Theme theme;
private final PluginLogger logger;
protected final ErrorHandler errorHandler; protected final ErrorHandler errorHandler;
public ConfigSystem( public ConfigSystem(
PlanFiles files, PlanFiles files,
PlanConfig config, PlanConfig config,
Theme theme, Theme theme,
PluginLogger logger,
ErrorHandler errorHandler ErrorHandler errorHandler
) { ) {
this.files = files; this.files = files;
this.config = config; this.config = config;
this.theme = theme; this.theme = theme;
this.logger = logger;
this.errorHandler = errorHandler; this.errorHandler = errorHandler;
} }
@ -55,14 +62,30 @@ public abstract class ConfigSystem implements SubSystem {
copyDefaults(); copyDefaults();
config.save(); config.save();
// TODO Set Debug logger somewhere setDebugMode();
Log.setDebugMode(config.getString(Settings.DEBUG));
} catch (IOException e) { } catch (IOException e) {
throw new EnableException("Failed to save default config.", e); throw new EnableException("Failed to save default config.", e);
} }
theme.enable(); theme.enable();
} }
private void setDebugMode() {
String debugMode = config.getString(Settings.DEBUG);
List<DebugLogger> loggers = new ArrayList<>();
if (Verify.equalsOne(debugMode, "true", "both", "console")) {
loggers.add(new ConsoleDebugLogger(logger));
}
if (Verify.equalsOne(debugMode, "true", "both", "file")) {
loggers.add(new FolderTimeStampFileDebugLogger(files.getLogsFolder(), () -> errorHandler));
}
if (logger.getDebugLogger() instanceof CombineDebugLogger) {
CombineDebugLogger debugLogger = (CombineDebugLogger) logger.getDebugLogger();
loggers.add(debugLogger.getDebugLogger(MemoryDebugLogger.class).orElse(new MemoryDebugLogger()));
debugLogger.setDebugLoggers(loggers.toArray(new DebugLogger[0]));
}
}
/** /**
* Copies default values from file in jar to Config. * Copies default values from file in jar to Config.
* *