diff --git a/Plan/src/main/java/com/djrapitops/plan/system/settings/config/ConfigSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/settings/config/ConfigSystem.java index 2eacbf7e2..ed3188ee4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/settings/config/ConfigSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/settings/config/ConfigSystem.java @@ -9,12 +9,16 @@ import com.djrapitops.plan.system.SubSystem; import com.djrapitops.plan.system.file.PlanFiles; import com.djrapitops.plan.system.settings.Settings; 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.console.PluginLogger; +import com.djrapitops.plugin.logging.debug.*; import com.djrapitops.plugin.logging.error.ErrorHandler; +import com.djrapitops.plugin.utilities.Verify; import javax.inject.Singleton; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** * System for Config and other user customizable options. @@ -27,17 +31,20 @@ public abstract class ConfigSystem implements SubSystem { protected final PlanFiles files; protected final PlanConfig config; protected final Theme theme; + private final PluginLogger logger; protected final ErrorHandler errorHandler; public ConfigSystem( PlanFiles files, PlanConfig config, Theme theme, + PluginLogger logger, ErrorHandler errorHandler ) { this.files = files; this.config = config; this.theme = theme; + this.logger = logger; this.errorHandler = errorHandler; } @@ -55,14 +62,30 @@ public abstract class ConfigSystem implements SubSystem { copyDefaults(); config.save(); - // TODO Set Debug logger somewhere - Log.setDebugMode(config.getString(Settings.DEBUG)); + setDebugMode(); } catch (IOException e) { throw new EnableException("Failed to save default config.", e); } theme.enable(); } + private void setDebugMode() { + String debugMode = config.getString(Settings.DEBUG); + + List 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. *