diff --git a/.gitignore b/.gitignore index 43b3068..dcf864f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ build/ # IDE specific stuff .idea/ + +# Logs +*.log diff --git a/src/main/java/de/siphalor/was/Start.java b/src/main/java/de/siphalor/was/Start.java index 91264fc..7dab63d 100644 --- a/src/main/java/de/siphalor/was/Start.java +++ b/src/main/java/de/siphalor/was/Start.java @@ -1,6 +1,9 @@ package de.siphalor.was; import de.siphalor.was.content.lang.I18n; +import de.siphalor.was.util.Util; + +import java.util.logging.Level; public class Start { public static void main(String[] args) { @@ -9,7 +12,7 @@ public class Start { was.setup(); I18n.getInstance().setLang("de_de", was.getContentManager()); - System.out.println(I18n.getInstance().getString("test.hello-world")); + Util.LOGGER.log(Level.INFO, I18n.getInstance().getString("test.hello-world")); was.run(); } diff --git a/src/main/java/de/siphalor/was/WhatAStorage.java b/src/main/java/de/siphalor/was/WhatAStorage.java index 6474e2a..35e7e09 100644 --- a/src/main/java/de/siphalor/was/WhatAStorage.java +++ b/src/main/java/de/siphalor/was/WhatAStorage.java @@ -12,6 +12,7 @@ import de.siphalor.was.content.quest.QuestManager; import de.siphalor.was.content.quest.RandomQuestGenerator; import de.siphalor.was.game.Balance; import de.siphalor.was.game.Storage; +import de.siphalor.was.util.Util; import de.siphalor.was.visual.JFXVisual; import de.siphalor.was.visual.Visual; import org.jetbrains.annotations.Nullable; @@ -20,6 +21,8 @@ import java.io.File; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; public class WhatAStorage { private static final int MAX_QUESTS = 3; @@ -87,7 +90,7 @@ public class WhatAStorage { productManager.reload(contentManager); questManager.reload(contentManager); - System.out.println("Reloaded game content"); + Util.LOGGER.log(Level.INFO, "Reloaded game content"); } public void setup() { @@ -141,7 +144,7 @@ public class WhatAStorage { public void abandonQuest(int index) { if (index >= quests.size()) { - System.out.println("INTERNAL ERROR: Attempted to abandon non-existent quest!"); + Util.LOGGER.log(Level.SEVERE, "Attempted to abandon non-existent quest!"); return; } diff --git a/src/main/java/de/siphalor/was/content/lang/Lang.java b/src/main/java/de/siphalor/was/content/lang/Lang.java index 8ef54c4..9526042 100644 --- a/src/main/java/de/siphalor/was/content/lang/Lang.java +++ b/src/main/java/de/siphalor/was/content/lang/Lang.java @@ -2,6 +2,7 @@ package de.siphalor.was.content.lang; import de.siphalor.was.content.ContentManager; import de.siphalor.was.content.resource.Resource; +import de.siphalor.was.util.Util; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -10,6 +11,7 @@ import java.io.InputStream; import java.util.Enumeration; import java.util.Optional; import java.util.Properties; +import java.util.logging.Level; public class Lang { private final String code; @@ -43,7 +45,7 @@ public class Lang { }); if (properties.isEmpty()) { - System.out.println("Failed to load lang file for " + code); + Util.LOGGER.log(Level.SEVERE, "Failed to load lang file for " + code); } } diff --git a/src/main/java/de/siphalor/was/content/quest/StaticQuestGenerator.java b/src/main/java/de/siphalor/was/content/quest/StaticQuestGenerator.java index 51dc062..829efb7 100644 --- a/src/main/java/de/siphalor/was/content/quest/StaticQuestGenerator.java +++ b/src/main/java/de/siphalor/was/content/quest/StaticQuestGenerator.java @@ -3,6 +3,7 @@ package de.siphalor.was.content.quest; import de.siphalor.was.content.product.Product; import de.siphalor.was.content.product.ProductManager; import de.siphalor.was.content.product.ProductType; +import de.siphalor.was.util.Util; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,6 +15,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; +import java.util.logging.Level; public class StaticQuestGenerator implements QuestGenerator { @NotNull @@ -46,22 +48,22 @@ public class StaticQuestGenerator implements QuestGenerator { if (product != null) { quests.add(new Quest(type, reward, product)); } else { - System.out.println("Invalid product in quest: " + line); + Util.LOGGER.log(Level.WARNING, "Invalid product in quest: " + line); } } else { - System.out.println("Invalid product in quest: " + parts[2]); + Util.LOGGER.log(Level.WARNING, "Invalid product in quest: " + parts[2]); } } else { - System.out.println("Invalid line in quests file: " + line); + Util.LOGGER.log(Level.WARNING, "Invalid line in quests file: " + line); } } catch (Exception e) { - System.out.println("Failed to load quest in csv file in line: " + line); + Util.LOGGER.log(Level.WARNING, "Failed to load quest in csv file in line: " + line); e.printStackTrace(); } } return new StaticQuestGenerator(quests); } catch (IOException e) { - System.out.println("Failed to load quest csv file:"); + Util.LOGGER.log(Level.WARNING, "Failed to load quest csv file:"); e.printStackTrace(); } return null; diff --git a/src/main/java/de/siphalor/was/util/Util.java b/src/main/java/de/siphalor/was/util/Util.java index 009a91a..2d053cd 100644 --- a/src/main/java/de/siphalor/was/util/Util.java +++ b/src/main/java/de/siphalor/was/util/Util.java @@ -1,10 +1,17 @@ package de.siphalor.was.util; import java.awt.image.ImageObserver; +import java.io.IOException; import java.util.function.IntPredicate; import java.util.function.Predicate; +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; public class Util { + public static final Logger LOGGER; + private static final Predicate DUMMY_PREDICATE = o -> true; private static final IntPredicate DUMMY_INT_PREDICATE = value -> true; @@ -39,4 +46,16 @@ public class Util { public static ImageObserver dummyImageObserver() { return (img, infoflags, x, y, width, height) -> false; } + + static { + LOGGER = Logger.getLogger(""); + try { + FileHandler logFile = new FileHandler("was.log"); + logFile.setLevel(Level.FINEST); + logFile.setFormatter(new SimpleFormatter()); + LOGGER.addHandler(logFile); + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/de/siphalor/was/visual/JFXVisual.java b/src/main/java/de/siphalor/was/visual/JFXVisual.java index 60e84e9..d41aa7f 100644 --- a/src/main/java/de/siphalor/was/visual/JFXVisual.java +++ b/src/main/java/de/siphalor/was/visual/JFXVisual.java @@ -8,6 +8,7 @@ import de.siphalor.was.content.product.Product; import de.siphalor.was.content.quest.Quest; import de.siphalor.was.content.resource.Resource; import de.siphalor.was.game.Balance; +import de.siphalor.was.util.Util; import de.siphalor.was.visual.jfx.controller.BalanceController; import de.siphalor.was.visual.jfx.controller.MainController; import de.siphalor.was.visual.jfx.controller.QuestController; @@ -30,6 +31,7 @@ import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.io.InputStream; import java.util.*; +import java.util.logging.Level; public class JFXVisual extends Application implements Visual { private static Stage primaryStage; @@ -209,7 +211,7 @@ public class JFXVisual extends Application implements Visual { e.printStackTrace(); } }, () -> { - System.out.println("INTERNAL ERROR: Failed to load quest widget"); + Util.LOGGER.log(Level.SEVERE, "INTERNAL ERROR: Failed to load quest widget"); }); }