diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiLoggerLevel.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiLoggerLevel.java
new file mode 100644
index 000000000..defe8be46
--- /dev/null
+++ b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiLoggerLevel.java
@@ -0,0 +1,53 @@
+/*
+ * This file is part of the Distant Horizons mod
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.distanthorizons.api.enums.config;
+
+import org.apache.logging.log4j.Level;
+
+/**
+ * ALL
+ * DEBUG
+ * INFO
+ * WARN
+ * ERROR
+ * DISABLED
+ *
+ * @since API 5.0.0
+ * @version 2024-4-6
+ */
+public enum EDhApiLoggerLevel
+{
+ // ordered from most to least broad
+ ALL(Level.ALL),
+ DEBUG(Level.DEBUG),
+ INFO(Level.INFO),
+ WARN(Level.WARN),
+ ERROR(Level.ERROR),
+ DISABLED(Level.OFF),
+ ;
+
+ public final Level level;
+
+ EDhApiLoggerLevel(Level level)
+ { this.level = level; }
+
+
+
+}
diff --git a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiLoggerMode.java b/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiLoggerMode.java
deleted file mode 100644
index d4c925eb6..000000000
--- a/api/src/main/java/com/seibel/distanthorizons/api/enums/config/EDhApiLoggerMode.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This file is part of the Distant Horizons mod
- * licensed under the GNU LGPL v3 License.
- *
- * Copyright (C) 2020 James Seibel
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.seibel.distanthorizons.api.enums.config;
-
-import org.apache.logging.log4j.Level;
-
-/**
- * @since API 2.0.0
- * @version 2024-4-6
- */
-public enum EDhApiLoggerMode
-{
- DISABLED(Level.OFF, Level.OFF),
- LOG_ALL_TO_FILE(Level.ALL, Level.OFF),
- LOG_ERROR_TO_CHAT(Level.ALL, Level.ERROR),
- LOG_WARNING_TO_CHAT(Level.ALL, Level.WARN),
- LOG_INFO_TO_CHAT(Level.ALL, Level.INFO),
- LOG_DEBUG_TO_CHAT(Level.ALL, Level.DEBUG),
- LOG_ALL_TO_CHAT(Level.ALL, Level.ALL),
- LOG_ERROR_TO_CHAT_AND_FILE(Level.ERROR, Level.ERROR),
- LOG_WARNING_TO_CHAT_AND_FILE(Level.WARN, Level.WARN),
- LOG_INFO_TO_CHAT_AND_FILE(Level.INFO, Level.INFO),
- LOG_DEBUG_TO_CHAT_AND_FILE(Level.DEBUG, Level.DEBUG),
- LOG_WARNING_TO_CHAT_AND_INFO_TO_FILE(Level.INFO, Level.WARN),
- LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE(Level.INFO, Level.ERROR),
- LOG_ERROR_TO_CHAT_AND_WARNING_TO_FILE(Level.ERROR, Level.WARN),
- ;
-
- public final Level levelForFile;
- public final Level levelForChat;
-
- EDhApiLoggerMode(Level levelForFile, Level levelForChat)
- {
- this.levelForFile = levelForFile;
- this.levelForChat = levelForChat;
- }
-
-}
diff --git a/api/src/main/java/com/seibel/distanthorizons/coreapi/ModInfo.java b/api/src/main/java/com/seibel/distanthorizons/coreapi/ModInfo.java
index 4c5eb32eb..8d82bc449 100644
--- a/api/src/main/java/com/seibel/distanthorizons/coreapi/ModInfo.java
+++ b/api/src/main/java/com/seibel/distanthorizons/coreapi/ModInfo.java
@@ -43,9 +43,9 @@ public final class ModInfo
public static final boolean IS_DEV_BUILD = VERSION.toLowerCase().contains("dev");
/** This version should only be updated when breaking changes are introduced to the DH API */
- public static final int API_MAJOR_VERSION = 4;
+ public static final int API_MAJOR_VERSION = 5;
/** This version should be updated whenever new methods are added to the DH API */
- public static final int API_MINOR_VERSION = 1;
+ public static final int API_MINOR_VERSION = 0;
/** This version should be updated whenever non-breaking fixes are added to the DH API */
public static final int API_PATCH_VERSION = 0;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java
index 9ff00afac..e29b00575 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java
@@ -21,6 +21,7 @@ package com.seibel.distanthorizons.core;
import com.github.luben.zstd.ZstdOutputStream;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.renderer.generic.GenericRenderObjectFactory;
import com.seibel.distanthorizons.core.sql.DatabaseUpdater;
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
@@ -33,7 +34,7 @@ import com.seibel.distanthorizons.api.DhApi;
import com.seibel.distanthorizons.core.render.DhApiRenderProxy;
import net.jpountz.lz4.LZ4FrameOutputStream;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.sqlite.SQLiteJDBCLoader;
import org.sqlite.util.OSInfo;
import org.tukaani.xz.XZOutputStream;
@@ -44,8 +45,7 @@ import java.io.File;
/** Handles first time Core setup. */
public class Initializer
{
- private static final Logger LOGGER = LogManager.getLogger(ModInfo.NAME + "-" + Initializer.class.getSimpleName());
- private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static void init()
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataCache.java b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataCache.java
index 37cabfb97..5b647bd98 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataCache.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataCache.java
@@ -2,10 +2,10 @@ package com.seibel.distanthorizons.core.api.external.methods.data;
import com.seibel.distanthorizons.api.interfaces.data.IDhApiTerrainDataCache;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import it.unimi.dsi.fastutil.longs.Long2ReferenceOpenHashMap;
import it.unimi.dsi.fastutil.longs.LongSet;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;
import java.lang.ref.SoftReference;
@@ -15,7 +15,7 @@ public class DhApiTerrainDataCache implements IDhApiTerrainDataCache
private final Object modificationLock = new Object();
private Long2ReferenceOpenHashMap> posToFullDataRef = new Long2ReferenceOpenHashMap<>();
- private static final Logger LOGGER = LogManager.getLogger(DhApiTerrainDataCache.class.getSimpleName());
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java
index 2a807aefd..25e271500 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/external/methods/data/DhApiTerrainDataRepo.java
@@ -31,6 +31,7 @@ import com.seibel.distanthorizons.core.dataObjects.fullData.FullDataPointIdMap;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhLodPos;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.render.renderer.DebugRenderer;
@@ -49,7 +50,7 @@ import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.util.math.Vec3i;
import it.unimi.dsi.fastutil.longs.LongArrayList;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
@@ -64,7 +65,7 @@ public class DhApiTerrainDataRepo implements IDhApiTerrainDataRepo
{
public static DhApiTerrainDataRepo INSTANCE = new DhApiTerrainDataRepo();
- private static final Logger LOGGER = LogManager.getLogger(DhApiTerrainDataRepo.class.getSimpleName());
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
// debugging values
private static volatile boolean debugThreadRunning = false;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
index 05057428e..53d81e726 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientApi.java
@@ -26,6 +26,7 @@ import com.seibel.distanthorizons.api.methods.events.abstractEvents.*;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
import com.seibel.distanthorizons.core.api.internal.rendering.RenderState;
import com.seibel.distanthorizons.core.file.structure.ClientOnlySaveStructure;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.network.messages.MessageRegistry;
import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.render.DhApiRenderProxy;
@@ -43,9 +44,6 @@ import com.seibel.distanthorizons.api.enums.rendering.EDhApiDebugRendering;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiRendererMode;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
-import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
-import com.seibel.distanthorizons.core.logging.SpamReducedLogger;
import com.seibel.distanthorizons.core.util.math.Mat4f;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
import com.seibel.distanthorizons.core.render.renderer.TestRenderer;
@@ -59,7 +57,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import org.lwjgl.glfw.GLFW;
@@ -75,7 +73,7 @@ import java.util.concurrent.TimeUnit;
*/
public class ClientApi
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static boolean prefLoggerEnabled = false;
@@ -85,8 +83,6 @@ public class ClientApi
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
- public static final long SPAM_LOGGER_FLUSH_NS = TimeUnit.NANOSECONDS.convert(1, TimeUnit.SECONDS);
-
/** this includes the is dev build message and low allocated memory warning */
private static final int MS_BETWEEN_STATIC_STARTUP_MESSAGES = 4_000;
@@ -343,15 +339,6 @@ public class ClientApi
try
{
- boolean doFlush = System.nanoTime() - this.lastFlushNanoTime >= SPAM_LOGGER_FLUSH_NS;
- if (doFlush)
- {
- this.lastFlushNanoTime = System.nanoTime();
- SpamReducedLogger.flushAll();
- }
- ConfigBasedLogger.updateAll();
- ConfigBasedSpamLogger.updateAll(doFlush);
-
IDhClientWorld clientWorld = SharedApi.getIDhClientWorld();
if (clientWorld != null)
{
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientPluginChannelApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientPluginChannelApi.java
index f7c669117..10a8e2c44 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientPluginChannelApi.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ClientPluginChannelApi.java
@@ -4,13 +4,13 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager;
import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.network.event.internal.CloseInternalEvent;
import com.seibel.distanthorizons.core.network.messages.base.LevelInitMessage;
import com.seibel.distanthorizons.core.network.session.NetworkSession;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
-import org.apache.logging.log4j.LogManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -22,8 +22,10 @@ import java.util.function.Consumer;
*/
public class ClientPluginChannelApi
{
- private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
+
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private static final IKeyedClientLevelManager KEYED_CLIENT_LEVEL_MANAGER = SingletonInjector.INSTANCE.get(IKeyedClientLevelManager.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ServerApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ServerApi.java
index 13c6853bf..309352e09 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ServerApi.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/ServerApi.java
@@ -30,7 +30,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
/**
@@ -41,7 +41,7 @@ public class ServerApi
{
public static final ServerApi INSTANCE = new ServerApi();
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java
index 94e210c14..b62d0a617 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/SharedApi.java
@@ -47,7 +47,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSha
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@@ -58,7 +58,7 @@ public class SharedApi
{
public static final SharedApi INSTANCE = new SharedApi();
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** will be null on the server-side */
@Nullable
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java
index 72ee82426..140ad757b 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/api/internal/chunkUpdating/ChunkUpdateQueueManager.java
@@ -6,11 +6,11 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.world.EWorldEnvironment;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
public class ChunkUpdateQueueManager
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final ChunkPosQueue updateQueue;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
index 8b1a2359d..2ec91fdc9 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java
@@ -36,7 +36,7 @@ import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.util.tinyfd.TinyFileDialogs;
import java.awt.*;
@@ -54,7 +54,7 @@ import java.util.List;
@SuppressWarnings("ConcatenationWithEmptyString")
public class Config
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static ConfigCategory client = new ConfigCategory.Builder().set(Client.class).build();
@@ -1527,49 +1527,74 @@ public class Config
{
public static ConfigUIComment loggingHeader = new ConfigUIComment.Builder().setParentConfigClass(Logging.class).build();
- // TODO add change all option
- // TODO default to error chat and info file
- public static ConfigEntry logWorldGenEvent = new ConfigEntry.Builder()
+
+ public static ConfigEntry globalFileMaxLevel = new ConfigEntry.Builder()
+ .setChatCommandName("logging.globalFileMaxLevel")
+ .set(EDhApiLoggerLevel.INFO)
+ .comment(""
+ + ""
+ + "")
+ .build();
+
+ public static ConfigEntry globalChatMaxLevel = new ConfigEntry.Builder()
+ .setChatCommandName("logging.globalChatMaxLevel")
+ .set(EDhApiLoggerLevel.ERROR)
+ .comment(""
+ + ""
+ + "")
+ .build();
+
+ public static ConfigUISpacer globalLoggingSpacer = new ConfigUISpacer.Builder().build();
+
+
+ public static ConfigEntry logWorldGenEventToFile = new ConfigEntry.Builder()
.setChatCommandName("logging.logWorldGenEvent")
- .set(EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE)
+ .set(EDhApiLoggerLevel.INFO)
.comment(""
+ "If enabled, the mod will log information about the world generation process. \n"
+ "This can be useful for debugging.")
.build();
- public static ConfigEntry logWorldGenPerformance = new ConfigEntry.Builder()
+ public static ConfigEntry logWorldGenPerformanceToFile = new ConfigEntry.Builder()
.setChatCommandName("logging.logWorldGenPerformance")
- .set(EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE)
+ .set(EDhApiLoggerLevel.INFO)
.comment(""
+ "If enabled, the mod will log performance about the world generation process. \n"
+ "This can be useful for debugging.")
.build();
- public static ConfigEntry logWorldGenLoadEvent = new ConfigEntry.Builder()
+ public static ConfigEntry logWorldGenChunkLoadEventToFile = new ConfigEntry.Builder()
.setChatCommandName("logging.logWorldGenLoadEvent")
- .set(EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE)
+ .set(EDhApiLoggerLevel.INFO)
.comment(""
+ "If enabled, the mod will log information about the world generation process. \n"
+ "This can be useful for debugging.")
.build();
- public static ConfigEntry logRendererBufferEvent = new ConfigEntry.Builder()
- .set(EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE)
+ public static ConfigEntry logRendererEventToFile = new ConfigEntry.Builder()
+ .set(EDhApiLoggerLevel.INFO)
.comment(""
- + "If enabled, the mod will log information about the renderer buffer process. \n"
+ + "If enabled, the mod will log information about the renderer setup, cleanup, and any issues it may encounter. \n"
+ "This can be useful for debugging.")
.build();
- public static ConfigEntry logRendererGLEvent = new ConfigEntry.Builder()
- .set(EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE)
+ public static ConfigEntry logRendererGLEventToFile = new ConfigEntry.Builder()
+ .set(EDhApiLoggerLevel.INFO)
.comment(""
+ "If enabled, the mod will log information about the renderer OpenGL process. \n"
+ "This can be useful for debugging.")
.build();
- public static ConfigEntry logNetworkEvent = new ConfigEntry.Builder()
+ public static ConfigEntry logRendererGLEventToChat = new ConfigEntry.Builder()
+ .set(EDhApiLoggerLevel.ERROR)
+ .comment(""
+ + "If enabled, the mod will log information about the renderer OpenGL process. \n"
+ + "This can be useful for debugging.")
+ .build();
+
+ public static ConfigEntry logNetworkEventToFile = new ConfigEntry.Builder()
.setChatCommandName("logging.logNetworkEvent")
- .set(EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_WARNING_TO_FILE)
+ .set(EDhApiLoggerLevel.INFO)
.comment(""
+ "If enabled, the mod will log information about network operations. \n"
+ "This can be useful for debugging.")
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/ConfigHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/ConfigHandler.java
index 640e58439..65d555c25 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/ConfigHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/ConfigHandler.java
@@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.config.ILangWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.lang.reflect.Field;
import java.nio.file.Path;
@@ -44,7 +44,7 @@ import java.util.*;
*/
public class ConfigHandler
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftSharedWrapper MC_SHARED = SingletonInjector.INSTANCE.get(IMinecraftSharedWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java
index cdeabb4f1..53a6bce6c 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java
@@ -24,18 +24,19 @@ import com.seibel.distanthorizons.core.config.ConfigPresetOptions;
import com.seibel.distanthorizons.core.config.listeners.IConfigListener;
import com.seibel.distanthorizons.core.config.types.AbstractConfigBase;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.TimerUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.config.IConfigGui;
import com.seibel.distanthorizons.coreapi.util.StringUtil;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.util.*;
public abstract class AbstractPresetConfigEventHandler> implements IConfigListener
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final long MS_DELAY_BEFORE_APPLYING_PRESET = 3_000;
@Nullable
@@ -139,7 +140,7 @@ public abstract class AbstractPresetConfigEventHandler drawResolution = new ConfigPresetOptions<>(Config.Client.Advanced.Graphics.Quality.maxHorizontalResolution,
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/ThreadPresetConfigEventHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/ThreadPresetConfigEventHandler.java
index 9adee3d7b..9b120be45 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/ThreadPresetConfigEventHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/eventHandlers/presets/ThreadPresetConfigEventHandler.java
@@ -24,9 +24,10 @@ import com.seibel.distanthorizons.core.config.listeners.ConfigChangeListener;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.config.ConfigPresetOptions;
import com.seibel.distanthorizons.core.config.types.AbstractConfigBase;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.coreapi.util.MathUtil;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.Arrays;
import java.util.HashMap;
@@ -37,7 +38,7 @@ public class ThreadPresetConfigEventHandler extends AbstractPresetConfigEventHan
{
public static final ThreadPresetConfigEventHandler INSTANCE = new ThreadPresetConfigEventHandler();
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static int getDefaultThreadCount() { return getThreadCountByPercent(0.5); }
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandler.java
index 6d4e789f7..e4f0b2512 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigFileHandler.java
@@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.IOException;
import java.nio.file.Files;
@@ -43,13 +43,11 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class ConfigFileHandler
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final Path configPath;
- private final Logger logger;
-
/** This is the object for night-config */
private final CommentedFileConfig nightConfig;
@@ -64,7 +62,6 @@ public class ConfigFileHandler
public ConfigFileHandler(Path configPath)
{
- this.logger = LogManager.getLogger(this.getClass().getSimpleName() + ", " + ModInfo.ID);
this.configPath = configPath;
this.nightConfig = CommentedFileConfig
@@ -157,18 +154,18 @@ public class ConfigFileHandler
}
else if (currentCfgVersion > ModInfo.CONFIG_FILE_VERSION)
{
- this.logger.warn("Found config version [" + currentCfgVersion + "] which is newer than current mods config version of [" + ModInfo.CONFIG_FILE_VERSION + "]. You may have downgraded the mod and items may have been moved, you have been warned");
+ LOGGER.warn("Found config version [" + currentCfgVersion + "] which is newer than current mods config version of [" + ModInfo.CONFIG_FILE_VERSION + "]. You may have downgraded the mod and items may have been moved, you have been warned");
}
else // if (currentCfgVersion < configBase.configVersion)
{
- this.logger.warn(ModInfo.NAME + " config is of an older version, currently there is no config updater... so resetting config");
+ LOGGER.warn(ModInfo.NAME + " config is of an older version, currently there is no config updater... so resetting config");
try
{
Files.delete(this.configPath);
}
catch (Exception e)
{
- this.logger.error(e);
+ LOGGER.error("Unable to delete outdated config file at: ["+this.configPath+"], error: ["+e.getMessage()+"].", e);
}
}
@@ -281,7 +278,7 @@ public class ConfigFileHandler
Object convertedValue = ConfigTypeConverters.attemptToConvertFromString(expectedValueClass, value);
if (!convertedValue.getClass().equals(expectedValueClass))
{
- this.logger.error("Unable to convert config value ["+value+"] from ["+(value != null ? value.getClass() : "NULL")+"] to ["+expectedValueClass+"] for config ["+entry.name+"], " +
+ LOGGER.error("Unable to convert config value ["+value+"] from ["+(value != null ? value.getClass() : "NULL")+"] to ["+expectedValueClass+"] for config ["+entry.name+"], " +
"the default config value will be used instead ["+entry.getDefaultValue()+"]. " +
"Make sure a converter is defined in ["+ConfigTypeConverters.class.getSimpleName()+"].");
convertedValue = entry.getDefaultValue();
@@ -290,13 +287,13 @@ public class ConfigFileHandler
if (entry.getTrueValue() == null)
{
- this.logger.warn("Entry [" + entry.getNameAndCategory() + "] returned as null from the config. Using default value.");
+ LOGGER.warn("Entry [" + entry.getNameAndCategory() + "] returned as null from the config. Using default value.");
entry.setWithoutFiringEvents(entry.getDefaultValue());
}
}
catch (Exception e)
{
- this.logger.warn("Entry [" + entry.getNameAndCategory() + "] had an invalid value when loading the config. Using default value.");
+ LOGGER.warn("Entry [" + entry.getNameAndCategory() + "] had an invalid value when loading the config. Using default value.");
entry.setWithoutFiringEvents(entry.getDefaultValue());
}
}
@@ -350,18 +347,20 @@ public class ConfigFileHandler
}
catch (Exception e)
{
- this.logger.warn("Loading file failed because of this expectation:\n" + e);
+ LOGGER.warn("Loading file failed because of this expectation:\n" + e);
reCreateFile(this.configPath);
nightConfig.load();
}
}
- catch (Exception ex)
+ catch (Exception e)
{
- System.out.println("Creating file failed");
- this.logger.error(ex);
- SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class).crashMinecraft("Loading file and resetting config file failed at path [" + this.configPath + "]. Please check the file is ok and you have the permissions", ex);
+ LOGGER.error("File creation failed at ["+this.configPath+"], error: ["+e.getMessage()+"].", e);
+
+ // TODO is there a reason this is lazily gotten?
+ IMinecraftClientWrapper mc = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
+ mc.crashMinecraft("Loading file and resetting config file failed at path [" + this.configPath + "]. Please check the file is ok and you have the permissions", e);
}
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigTypeConverters.java b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigTypeConverters.java
index 678bdf372..12757d700 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigTypeConverters.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/file/ConfigTypeConverters.java
@@ -23,7 +23,7 @@ import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.core.io.ParsingMode;
import com.electronwill.nightconfig.json.JsonFormat;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.HashMap;
import java.util.Map;
@@ -36,7 +36,7 @@ import java.util.Map;
*/
public class ConfigTypeConverters
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
// Once you've made a converter add it to here where the first value is the type you want to convert and the 2nd value is the converter
public static final Map, ConverterBase> convertObjects = new HashMap, ConverterBase>()
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/types/ConfigUIComment.java b/core/src/main/java/com/seibel/distanthorizons/core/config/types/ConfigUIComment.java
index a34f97e94..df9825cfa 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/config/types/ConfigUIComment.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/config/types/ConfigUIComment.java
@@ -23,7 +23,7 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.config.types.enums.EConfigCommentTextPosition;
import com.seibel.distanthorizons.core.config.types.enums.EConfigEntryAppearance;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -34,7 +34,7 @@ import org.jetbrains.annotations.Nullable;
*/
public class ConfigUIComment extends AbstractConfigBase
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public String parentConfigPath = null;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java
index 6a266f1df..120c50450 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/FullDataPointIdMap.java
@@ -20,6 +20,7 @@
package com.seibel.distanthorizons.core.dataObjects.fullData;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.DataCorruptedException;
@@ -30,7 +31,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.*;
import java.util.*;
@@ -51,7 +52,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class FullDataPointIdMap
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* Should only be enabled when debugging.
* Has the system check if any duplicate Entries were read/written
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java
index 3ca54ca4b..a3dc3c868 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV1.java
@@ -22,6 +22,7 @@ package com.seibel.distanthorizons.core.dataObjects.fullData.sources;
import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiWorldGenerationStep;
import com.seibel.distanthorizons.core.file.IDataSource;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV1DTO;
@@ -33,7 +34,7 @@ import com.seibel.distanthorizons.core.util.objects.dataStreams.DhDataOutputStre
import com.seibel.distanthorizons.core.dataObjects.fullData.FullDataPointIdMap;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.*;
import java.util.Arrays;
@@ -49,7 +50,7 @@ import java.util.Arrays;
*/
public class FullDataSourceV1 implements IDataSource
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final byte SECTION_SIZE_OFFSET = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL;
/** measured in dataPoints */
@@ -206,19 +207,19 @@ public class FullDataSourceV1 implements IDataSource
int dataDetail = inputStream.readInt();
if (dataDetail != dto.dataDetailLevel)
{
- throw new IOException(LodUtil.formatLog("Data level mismatch. Expected: ["+dto.dataDetailLevel+"], found ["+dataDetail+"]."));
+ throw new IOException("Data level mismatch. Expected: ["+dto.dataDetailLevel+"], found ["+dataDetail+"].");
}
int width = inputStream.readInt();
if (width != WIDTH)
{
- throw new IOException(LodUtil.formatLog("Section width mismatch: " + width + " != " + WIDTH + " (Currently only 1 section width is supported)"));
+ throw new IOException("Section width mismatch: [" + width + "] != [" + WIDTH + "] (Currently only 1 section width is supported)");
}
int minY = inputStream.readInt();
if (minY != level.getMinY())
{
- LOGGER.warn("Data minY mismatch: " + minY + " != " + level.getMinY() + ". Will ignore data's y level");
+ LOGGER.warn("Data minY mismatch: [" + minY + "] != [" + level.getMinY() + "]. Will ignore data's y level");
}
byte worldGenByte = inputStream.readByte();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java
index 482833d88..793772808 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/fullData/sources/FullDataSourceV2.java
@@ -28,6 +28,7 @@ import com.seibel.distanthorizons.core.dataObjects.transformers.LodDataBuilder;
import com.seibel.distanthorizons.core.file.AbstractDataSourceHandler;
import com.seibel.distanthorizons.core.file.IDataSource;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pooling.AbstractPhantomArrayList;
import com.seibel.distanthorizons.core.pooling.PhantomArrayListCheckout;
@@ -42,7 +43,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
import it.unimi.dsi.fastutil.bytes.ByteArrayList;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable;
@@ -60,7 +61,7 @@ public class FullDataSourceV2
extends AbstractPhantomArrayList
implements IDataSource, IDhApiFullDataSource
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** useful for debugging, but can slow down update operations quite a bit due to being called so often. */
private static final boolean RUN_UPDATE_DEV_VALIDATION = false;
/**
@@ -824,7 +825,7 @@ public class FullDataSourceV2
catch (DataCorruptedException e)
{
// shouldn't happen, (especially if validation is disabled) but just in case
- LOGGER.warn("Skipping corrupt datapoint for pos "+inputDataSource.pos+" at relative position ["+x+","+z+"] with data: ID["+lastId+"], Height["+height+"], minY["+minY+"], lastBlockLight["+lastBlockLight+"], lastSkyLight["+lastSkyLight+"].");
+ LOGGER.warn("Skipping corrupt datapoint for pos ["+DhSectionPos.toString(inputDataSource.pos)+"] at relative position ["+x+","+z+"] with data: ID["+lastId+"], Height["+height+"], minY["+minY+"], lastBlockLight["+lastBlockLight+"], lastSkyLight["+lastSkyLight+"].");
}
}
@@ -846,7 +847,7 @@ public class FullDataSourceV2
catch (DataCorruptedException e)
{
// shouldn't happen, (especially if validation is disabled) but just in case
- LOGGER.warn("Skipping corrupt datapoint for pos "+inputDataSource.pos+" at relative position ["+x+","+z+"] with data: ID["+lastId+"], Height["+height+"], minY["+minY+"], lastBlockLight["+lastBlockLight+"], lastSkyLight["+lastSkyLight+"].");
+ LOGGER.warn("Skipping corrupt datapoint for pos ["+DhSectionPos.toString(inputDataSource.pos)+"] at relative position ["+x+","+z+"] with data: ID["+lastId+"], Height["+height+"], minY["+minY+"], lastBlockLight["+lastBlockLight+"], lastSkyLight["+lastSkyLight+"].");
}
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java
index 27654f016..af9647c48 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/ColumnRenderSource.java
@@ -30,7 +30,7 @@ import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
import com.seibel.distanthorizons.core.util.ColorUtil;
import com.seibel.distanthorizons.core.util.RenderDataPointUtil;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.concurrent.atomic.AtomicLong;
@@ -41,7 +41,7 @@ import java.util.concurrent.atomic.AtomicLong;
*/
public class ColumnRenderSource extends AbstractPhantomArrayList
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final boolean DO_SAFETY_CHECKS = ModInfo.IS_DEV_BUILD;
public static final byte SECTION_SIZE_OFFSET = DhSectionPos.SECTION_MINIMUM_DETAIL_LEVEL;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java
index c0dd46277..1e2fec6b4 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBuffer.java
@@ -20,6 +20,7 @@
package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding;
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiRenderParam;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
@@ -28,7 +29,7 @@ import com.seibel.distanthorizons.core.render.renderer.LodRenderer;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.StatsMap;
import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.system.MemoryUtil;
import java.nio.ByteBuffer;
@@ -42,7 +43,7 @@ import java.util.concurrent.*;
*/
public class ColumnRenderBuffer implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** number of bytes a single quad takes */
public static final int QUADS_BYTE_SIZE = LodUtil.LOD_VERTEX_FORMAT.getByteSize() * 4;
@@ -328,7 +329,7 @@ public class ColumnRenderBuffer implements AutoCloseable
if (vertexBuffer.getSize() == 0)
{
- GLProxy.GL_LOGGER.warn("VBO with size 0");
+ GLProxy.LOGGER.warn("VBO with size 0");
}
statsMap.incBytesStat("TotalUsage", vertexBuffer.getSize());
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java
index 8d3afdc8d..6638eaf40 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/ColumnRenderBufferBuilder.java
@@ -25,7 +25,7 @@ import com.seibel.distanthorizons.core.enums.EDhDirection;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.render.ColumnRenderSource;
import com.seibel.distanthorizons.core.level.IDhClientLevel;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -35,10 +35,7 @@ import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.RenderDataPointUtil;
import com.seibel.distanthorizons.core.util.objects.UncheckedInterruptedException;
import com.seibel.distanthorizons.core.dataObjects.render.columnViews.ColumnArrayView;
-import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import java.util.concurrent.CompletableFuture;
@@ -49,9 +46,7 @@ import java.util.concurrent.CompletableFuture;
*/
public class ColumnRenderBufferBuilder
{
- public static final ConfigBasedLogger EVENT_LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logRendererBufferEvent.get());
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
@@ -236,7 +231,7 @@ public class ColumnRenderBufferBuilder
}
catch (RuntimeException e)
{
- EVENT_LOGGER.warn("Failed to get adj data for relative pos: [" + thisDetailLevel + ":" + relX + "," + relZ + "] at [" + lodDirection + "], Error: "+e.getMessage(), e);
+ LOGGER.warn("Failed to get adj data for relative pos: [" + thisDetailLevel + ":" + relX + "," + relZ + "] at [" + lodDirection + "], Error: [" + e.getMessage() + "].", e);
}
} // for adjacent directions
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java
index 199910604..c6b058706 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/render/bufferBuilding/LodQuadBuilder.java
@@ -20,9 +20,7 @@
package com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding;
import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
import java.util.*;
-import java.util.concurrent.atomic.AtomicLong;
import com.seibel.distanthorizons.api.enums.config.EDhApiGrassSideRendering;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiBlockMaterial;
@@ -30,15 +28,12 @@ import com.seibel.distanthorizons.api.enums.rendering.EDhApiDebugRendering;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.enums.EDhDirection;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer;
import com.seibel.distanthorizons.core.util.ColorUtil;
-import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
-import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.distanthorizons.coreapi.util.MathUtil;
-import org.apache.logging.log4j.Logger;
import org.lwjgl.system.MemoryUtil;
/**
@@ -48,7 +43,7 @@ import org.lwjgl.system.MemoryUtil;
*/
public class LodQuadBuilder
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
@SuppressWarnings("unchecked")
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java
index 9ec287823..613618a98 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java
@@ -40,7 +40,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapp
import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
import it.unimi.dsi.fastutil.longs.LongArrayList;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.util.HashSet;
@@ -50,7 +50,7 @@ import java.util.HashSet;
*/
public class FullDataToRenderDataTransformer
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IWrapperFactory WRAPPER_FACTORY = SingletonInjector.INSTANCE.get(IWrapperFactory.class);
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java
index 71a68cfd1..f0ed42aef 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/LodDataBuilder.java
@@ -46,12 +46,12 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
public class LodDataBuilder
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IWrapperFactory WRAPPER_FACTORY = SingletonInjector.INSTANCE.get(IWrapperFactory.class);
private static final IBlockStateWrapper AIR = WRAPPER_FACTORY.getAirBlockStateWrapper();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dependencyInjection/ModAccessorInjector.java b/core/src/main/java/com/seibel/distanthorizons/core/dependencyInjection/ModAccessorInjector.java
index 93156e972..7e35c65cc 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/dependencyInjection/ModAccessorInjector.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/dependencyInjection/ModAccessorInjector.java
@@ -23,7 +23,7 @@ import com.seibel.distanthorizons.coreapi.DependencyInjection.DependencyInjector
import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IModAccessor;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.lang.invoke.MethodHandles;
@@ -40,7 +40,7 @@ import java.lang.invoke.MethodHandles;
*/
public class ModAccessorInjector extends DependencyInjector
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final ModAccessorInjector INSTANCE = new ModAccessorInjector(IModAccessor.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java
index b2b24f9b7..fa88da0a3 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/AbstractDataSourceHandler.java
@@ -1,8 +1,12 @@
package com.seibel.distanthorizons.core.file;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
+import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2;
+import com.seibel.distanthorizons.core.file.fullDatafile.GeneratedFullDataSourceProvider;
+import com.seibel.distanthorizons.core.file.fullDatafile.RemoteFullDataSourceProvider;
import com.seibel.distanthorizons.core.file.structure.ISaveStructure;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.sql.repo.AbstractDhRepo;
@@ -11,7 +15,7 @@ import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.DataCorruptedException;
import com.seibel.distanthorizons.core.util.threading.PositionalLockProvider;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -22,8 +26,11 @@ import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantLock;
-// TODO is there a reason this is separate from FullDataSourceProviderV2?
-// We shouldn't need multiple data source handlers
+/**
+ * @see FullDataSourceProviderV2
+ * @see RemoteFullDataSourceProvider
+ * @see GeneratedFullDataSourceProvider
+ */
public abstract class AbstractDataSourceHandler
,
TDTO extends IBaseDTO,
@@ -31,7 +38,7 @@ public abstract class AbstractDataSourceHandler
TDhLevel extends IDhLevel>
implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final Set CORRUPT_DATA_ERRORS_LOGGED = Collections.newSetFromMap(new ConcurrentHashMap<>());
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java
index e982bf1c2..94d1d2dbe 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/DelayedFullDataSourceSaveCache.java
@@ -5,7 +5,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.util.KeyedLockContainer;
import com.seibel.distanthorizons.core.util.ThreadUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.WeakReference;
@@ -21,7 +21,7 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class DelayedFullDataSourceSaveCache implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* a cache won't automatically clean itself unless we trigger it's clean method
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java
index 1170cfbc6..1527eef46 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV1.java
@@ -12,7 +12,7 @@ import com.seibel.distanthorizons.core.util.objects.DataCorruptedException;
import com.seibel.distanthorizons.core.util.objects.dataStreams.DhDataInputStream;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@@ -27,7 +27,7 @@ import java.util.concurrent.locks.ReentrantLock;
public class FullDataSourceProviderV1
implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
protected final ReentrantLock closeLock = new ReentrantLock();
protected volatile boolean isShutdown = false;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java
index 289753940..0459896e2 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/FullDataSourceProviderV2.java
@@ -29,6 +29,7 @@ import com.seibel.distanthorizons.core.file.structure.ISaveStructure;
import com.seibel.distanthorizons.core.file.AbstractDataSourceHandler;
import com.seibel.distanthorizons.core.generation.tasks.WorldGenResult;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -44,7 +45,7 @@ import com.seibel.distanthorizons.core.util.threading.PriorityTaskPicker;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
@@ -65,7 +66,7 @@ public class FullDataSourceProviderV2
extends AbstractDataSourceHandler
implements IDebugRenderable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
protected static final int NUMBER_OF_PARENT_UPDATE_TASKS_PER_THREAD = 5;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java
index 041c80d3f..61c8cb535 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/GeneratedFullDataSourceProvider.java
@@ -29,6 +29,7 @@ import com.seibel.distanthorizons.core.generation.IFullDataSourceRetrievalQueue;
import com.seibel.distanthorizons.core.generation.tasks.IWorldGenTaskTracker;
import com.seibel.distanthorizons.core.generation.tasks.WorldGenResult;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pooling.PhantomArrayListCheckout;
import com.seibel.distanthorizons.core.pooling.PhantomArrayListPool;
@@ -40,7 +41,7 @@ import com.seibel.distanthorizons.core.util.threading.PriorityTaskPicker;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import it.unimi.dsi.fastutil.bytes.ByteArrayList;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -54,7 +55,7 @@ import java.util.stream.IntStream;
public class GeneratedFullDataSourceProvider extends FullDataSourceProviderV2 implements IDebugRenderable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();;
/**
* Having this number too high causes the system to become overwhelmed by
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java
index f136ae5cf..b3dbae741 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/fullDatafile/RemoteFullDataSourceProvider.java
@@ -27,7 +27,7 @@ import com.seibel.distanthorizons.core.level.IDhLevel;
import com.seibel.distanthorizons.core.level.WorldGenModule;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.multiplayer.client.SyncOnLoadRequestQueue;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@@ -41,7 +41,7 @@ import java.util.concurrent.TimeUnit;
*/
public class RemoteFullDataSourceProvider extends GeneratedFullDataSourceProvider
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
@Nullable
private final SyncOnLoadRequestQueue syncOnLoadRequestQueue;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java
index 3efb4c820..42890326f 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/ClientOnlySaveStructure.java
@@ -32,7 +32,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSha
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.coreapi.DependencyInjection.OverrideInjector;
import com.seibel.distanthorizons.coreapi.util.StringUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.File;
import java.util.*;
@@ -47,7 +47,7 @@ public class ClientOnlySaveStructure implements ISaveStructure
public static final String REPLAY_SERVER_FOLDER_NAME = "REPLAY";
public static final String INVALID_FILE_CHARACTERS_REGEX = "[\\\\/:*?\"<>|]";
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private static final IMinecraftSharedWrapper MC_SHARED = SingletonInjector.INSTANCE.get(IMinecraftSharedWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java
index b3586d0e2..b6105fcbb 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/file/structure/LocalSaveStructure.java
@@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
import com.seibel.distanthorizons.coreapi.DependencyInjection.OverrideInjector;
import com.seibel.distanthorizons.coreapi.util.StringUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.File;
import java.util.concurrent.ConcurrentHashMap;
@@ -36,7 +36,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class LocalSaveStructure implements ISaveStructure
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private final ConcurrentHashMap levelWrapperToFileMap = new ConcurrentHashMap<>();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java
index 26abd39aa..d68bf4132 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/BatchGenerator.java
@@ -30,7 +30,7 @@ import com.seibel.distanthorizons.api.enums.worldGeneration.EDhApiDistantGenerat
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
import com.seibel.distanthorizons.core.wrapperInterfaces.worldGeneration.AbstractBatchGenerationEnvironmentWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@@ -43,7 +43,7 @@ import java.util.function.Consumer;
public class BatchGenerator implements IDhApiWorldGenerator
{
private static final IWrapperFactory FACTORY = SingletonInjector.INSTANCE.get(IWrapperFactory.class);
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public AbstractBatchGenerationEnvironmentWrapper generationEnvironment;
public IDhLevel targetDhLevel;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/DhLightingEngine.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/DhLightingEngine.java
index d1c25a06e..029519a38 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/generation/DhLightingEngine.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/DhLightingEngine.java
@@ -33,7 +33,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrappe
import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IMutableBlockPosWrapper;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.awt.*;
import java.util.*;
@@ -49,7 +49,7 @@ import org.jetbrains.annotations.NotNull;
*/
public class DhLightingEngine
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final DhLightingEngine INSTANCE = new DhLightingEngine();
/**
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/PregenManager.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/PregenManager.java
index 50d1b9e5d..d1bd752a9 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/generation/PregenManager.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/PregenManager.java
@@ -13,7 +13,7 @@ import com.seibel.distanthorizons.core.util.FormatUtil;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.RollingAverage;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.text.MessageFormat;
@@ -26,7 +26,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class PregenManager
{
- protected static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ protected static final DhLogger LOGGER = new DhLoggerBuilder().build();
private final AtomicReference pregenFuture = new AtomicReference<>();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/RemoteWorldRetrievalQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/RemoteWorldRetrievalQueue.java
index 24ba12cdf..2d648ecf8 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/generation/RemoteWorldRetrievalQueue.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/RemoteWorldRetrievalQueue.java
@@ -12,7 +12,7 @@ import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos2D;
import com.seibel.distanthorizons.core.render.renderer.IDebugRenderable;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.objects.RollingAverage;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.ArrayList;
import java.util.List;
@@ -21,7 +21,7 @@ import java.util.concurrent.*;
public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQueue implements IFullDataSourceRetrievalQueue, IDebugRenderable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private int estimatedRemainingTaskCount;
private int estimatedTotalChunkCount;
@@ -90,7 +90,7 @@ public class RemoteWorldRetrievalQueue extends AbstractFullDataNetworkRequestQue
return WorldGenResult.CreateSplit(childFutures);
}
- LodUtil.assertNotReach();
+ LodUtil.assertNotReach("Unexpected and unhandled request response result: ["+requestResult+"]");
return WorldGenResult.CreateFail();
});
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java
index fe4d2b9b2..ea052d226 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/generation/WorldGenerationQueue.java
@@ -52,7 +52,7 @@ import com.seibel.distanthorizons.core.world.DhApiWorldProxy;
import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory;
import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper;
import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.awt.*;
import java.util.*;
@@ -62,7 +62,7 @@ import java.util.function.Consumer;
public class WorldGenerationQueue implements IFullDataSourceRetrievalQueue, IDebugRenderable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IWrapperFactory WRAPPER_FACTORY = SingletonInjector.INSTANCE.get(IWrapperFactory.class);
/**
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java
index 303489c97..806b3baeb 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/JarMain.java
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.jar;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO;
import com.seibel.distanthorizons.core.sql.repo.FullDataSourceV2Repo;
@@ -28,7 +29,7 @@ import com.seibel.distanthorizons.core.jar.gui.cusomJObject.JBox;
import com.seibel.distanthorizons.core.jar.installer.ModrinthGetter;
import com.seibel.distanthorizons.core.jar.installer.WebDownloader;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.apache.logging.log4j.core.LoggerContext;
import org.lwjgl.util.tinyfd.TinyFileDialogs;
@@ -49,7 +50,7 @@ import java.util.concurrent.atomic.AtomicReference;
// Once built it would be in core/build/libs/DistantHorizons--dev-all.jar
public class JarMain
{
- public static final Logger logger = LogManager.getLogger(JarMain.class.getSimpleName());
+ public static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static List argList;
public static final boolean isDarkTheme = DarkModeDetector.isDarkMode();
public static boolean isOffline = WebDownloader.netIsAvailable();
@@ -71,15 +72,15 @@ public class JarMain
}
catch (Exception e)
{
- logger.error("Failed to set log4j config. Try running with the \"--no-custom-logger\" argument");
+ LOGGER.error("Failed to set log4j config. Try running with the \"--no-custom-logger\" argument");
e.printStackTrace();
}
}
- logger.debug("Running " + ModInfo.READABLE_NAME + " standalone jar");
- logger.warn("The standalone jar is still a massive WIP, expect bugs");
- logger.debug("Java version " + System.getProperty("java.version"));
- //logger.debug(argList);
+ LOGGER.debug("Running " + ModInfo.READABLE_NAME + " standalone jar");
+ LOGGER.warn("The standalone jar is still a massive WIP, expect bugs");
+ LOGGER.debug("Java version " + System.getProperty("java.version"));
+ //LOGGER.debug(argList);
if (args.length == 0 || Arrays.asList(args).contains("--gui"))
@@ -87,7 +88,7 @@ public class JarMain
// Sets up the local
if (JarUtils.accessFile("assets/lod/lang/" + Locale.getDefault().toString().toLowerCase() + ".json") == null)
{
- logger.warn("The language setting [" + Locale.getDefault().toString().toLowerCase() + "] isn't allowed yet. Defaulting to [" + Locale.US.toString().toLowerCase() + "].");
+ LOGGER.warn("The language setting [" + Locale.getDefault().toString().toLowerCase() + "] isn't allowed yet. Defaulting to [" + Locale.US.toString().toLowerCase() + "].");
Locale.setDefault(Locale.US);
}
JarDependencySetup.createInitialBindings();
@@ -124,7 +125,7 @@ public class JarMain
}
catch (NumberFormatException e)
{
- logger.error("Unable to parse detail level ["+detailLevelString+"], error: ["+e.getMessage()+"].");
+ LOGGER.error("Unable to parse detail level ["+detailLevelString+"], error: ["+e.getMessage()+"].");
}
}
else if (argList.size() == 4)
@@ -145,14 +146,14 @@ public class JarMain
}
catch (NumberFormatException e)
{
- logger.error("Unable to parse position ["+detailLevelString+"], ["+posXString+"], ["+posZString+"], error: ["+e.getMessage()+"].");
+ LOGGER.error("Unable to parse position ["+detailLevelString+"], ["+posXString+"], ["+posZString+"], error: ["+e.getMessage()+"].");
}
}
}
if (showHelp)
{
- logger.info("--export parses the 'DistantHorizons.sqlite' file next to this jar and exports the given data into a CSV file. \n" +
+ LOGGER.info("--export parses the 'DistantHorizons.sqlite' file next to this jar and exports the given data into a CSV file. \n" +
"Usage: \n" +
"--export [LOD position Detail Level] [LOD position X] [LOD position Z] \n" +
"\tExport the given position's data if present. \n" +
@@ -170,7 +171,7 @@ public class JarMain
File dbFile = new File("./DistantHorizons.sqlite");
if (!dbFile.exists())
{
- logger.error("Unable to find a database to parse at: ["+dbFile.getAbsolutePath()+"].");
+ LOGGER.error("Unable to find a database to parse at: ["+dbFile.getAbsolutePath()+"].");
return;
}
@@ -180,7 +181,7 @@ public class JarMain
File exportFile = new File("DistantHorizons-export.csv"); // TODO allow setting an export folder
if (exportFile.isDirectory())
{
- logger.error("Export file can't be a folder. Given path: ["+exportFile+"].");
+ LOGGER.error("Export file can't be a folder. Given path: ["+exportFile+"].");
return;
}
@@ -192,22 +193,22 @@ public class JarMain
if (exportFile.exists())
{
- logger.error("Export file already exists: ["+exportFile.getAbsolutePath()+"].");
+ LOGGER.error("Export file already exists: ["+exportFile.getAbsolutePath()+"].");
return;
}
else if (exportFile.createNewFile())
{
- logger.error("Failed to create file: ["+exportFile.getAbsolutePath()+"].");
+ LOGGER.error("Failed to create file: ["+exportFile.getAbsolutePath()+"].");
return;
}
}
catch (Exception e)
{
- logger.error("Unable to create export file: ["+exportFile.getAbsolutePath()+"].");
+ LOGGER.error("Unable to create export file: ["+exportFile.getAbsolutePath()+"].");
return;
}
- logger.info("LOD data will be exported to ["+exportFile.getAbsolutePath()+"].");
+ LOGGER.info("LOD data will be exported to ["+exportFile.getAbsolutePath()+"].");
FullDataSourceV2Repo repo;
@@ -217,7 +218,7 @@ public class JarMain
}
catch (SQLException e)
{
- logger.error("Failed to initialize connection with database: ["+exportFile.getAbsolutePath()+"], error: ["+e.getMessage()+"].", e);
+ LOGGER.error("Failed to initialize connection with database: ["+exportFile.getAbsolutePath()+"], error: ["+e.getMessage()+"].", e);
return;
}
@@ -241,7 +242,7 @@ public class JarMain
FullDataSourceV2DTO dto = repo.getByKey(pos);
if (dto == null)
{
- logger.error("Unable to find any data at the position ["+DhSectionPos.toString(pos)+"].");
+ LOGGER.error("Unable to find any data at the position ["+DhSectionPos.toString(pos)+"].");
return;
}
// TODO need a way to create datasources (specifically data mappings) without a MC level object to deserialize with
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/JarUtils.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/JarUtils.java
index 1be68d48b..3ec1e3deb 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/JarUtils.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/JarUtils.java
@@ -20,10 +20,11 @@
package com.seibel.distanthorizons.core.jar;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IModChecker;
import com.seibel.distanthorizons.coreapi.ModInfo;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.io.*;
@@ -42,7 +43,7 @@ import java.util.Objects;
*/
public class JarUtils
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
@Nullable
public static File jarFile = null;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/ModJarInfo.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/ModJarInfo.java
index 26cdb7f20..bd7354f6c 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/ModJarInfo.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/ModJarInfo.java
@@ -22,8 +22,9 @@ package com.seibel.distanthorizons.core.jar;
import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.core.io.ParsingMode;
import com.electronwill.nightconfig.json.JsonFormat;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
/**
* Get info on the git for the mod
@@ -33,7 +34,7 @@ import org.apache.logging.log4j.Logger;
*/
public final class ModJarInfo
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final String FILE_NAME = "build_info.json";
static
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/GitlabGetter.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/GitlabGetter.java
index 3b167e1d4..e053df096 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/GitlabGetter.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/GitlabGetter.java
@@ -21,7 +21,7 @@ package com.seibel.distanthorizons.core.jar.installer;
import com.electronwill.nightconfig.core.Config;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.net.URL;
@@ -34,7 +34,7 @@ import java.util.*;
*/
public class GitlabGetter
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** DH's instance of the Gitlab getter */
public static GitlabGetter INSTANCE = new GitlabGetter();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java
index b98c66156..244d57adb 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java
@@ -23,7 +23,7 @@ import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.json.JsonFormat;
import com.seibel.distanthorizons.core.jar.updater.SelfUpdater;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.net.URL;
import java.util.*;
@@ -35,7 +35,7 @@ import java.util.*;
*/
public class ModrinthGetter
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final String ModrinthAPI = "https://api.modrinth.com/v2/project/";
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java
index f3b415864..db7b87554 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java
@@ -22,7 +22,7 @@ package com.seibel.distanthorizons.core.jar.installer;
import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.json.JsonFormat;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import javax.net.ssl.HttpsURLConnection;
import java.io.*;
@@ -40,7 +40,7 @@ import java.util.ArrayList;
*/
public class WebDownloader
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static boolean netIsAvailable()
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java
index 543365227..9bcf24876 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java
@@ -33,7 +33,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.IVersionConstants;
import com.seibel.distanthorizons.coreapi.ModInfo;
import com.seibel.distanthorizons.coreapi.util.StringUtil;
import com.seibel.distanthorizons.coreapi.util.jar.DeleteOnUnlock;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.util.tinyfd.TinyFileDialogs;
import javax.swing.*;
@@ -57,7 +57,7 @@ import java.util.zip.ZipFile;
*/
public class SelfUpdater
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** As we cannot delete(or replace) the jar while the mod is running, we just have this to delete it once the game closes */
public static boolean deleteOldJarOnJvmShutdown = false;
@@ -96,7 +96,7 @@ public class SelfUpdater
}
catch (Exception e) // Shouldn't be needed, but just in case
{
- LOGGER.warn(e);
+ LOGGER.warn("Unexpected updater startup error: ["+e.getMessage()+"].", e);
}
return returnValue;
}
@@ -258,13 +258,14 @@ public class SelfUpdater
deleteOldJarOnJvmShutdown = true;
- String message = "Distant Horizons successfully updated. It will apply on game's relaunch";
- LOGGER.info(message);
+ // TODO one of these messages contains something TinyFd doesn't like, find it and fix it
+ String successMessage = "Distant Horizons successfully updated. It will apply on game's relaunch";
+ LOGGER.info(successMessage);
new Thread(() ->
{
try
{
- TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "info", false);
+ TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, successMessage, "ok", "info", false);
}
catch (Exception ignore) { }
}).start();
@@ -283,12 +284,11 @@ public class SelfUpdater
}
- String message = "Failed to update Distant Horizons to version [" + ModrinthGetter.getLatestNameForVersion(minecraftVersion) + "], error: ["+e.getMessage()+"].";
-
- LOGGER.error(message, e);
+ String failMessage = "Failed to update Distant Horizons to version [" + ModrinthGetter.getLatestNameForVersion(minecraftVersion) + "], error: ["+e.getMessage()+"].";
+ LOGGER.error(failMessage, e);
try
{
- TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "error", false);
+ TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, failMessage, "ok", "error", false);
}
catch (Exception ignore) { }
@@ -380,13 +380,13 @@ public class SelfUpdater
deleteOldJarOnJvmShutdown = true;
- String message = "Distant Horizons updated, this will be applied on game restart.";
- LOGGER.info(message);
+ String successMessage = "Distant Horizons updated, this will be applied on game restart.";
+ LOGGER.info(successMessage);
new Thread(() ->
{
try
{
- TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "info", false);
+ TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, successMessage, "ok", "info", false);
}
catch (Exception ignore) { }
}).start();
@@ -419,13 +419,12 @@ public class SelfUpdater
}
-
- String message = "Failed to update [" + ModInfo.READABLE_NAME + "] to version [" + GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha") + "], error: ["+e.getMessage()+"].";
-
- LOGGER.error(message, e);
+ String versionHash = GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha");
+ String failMessage = "Failed to update [" + ModInfo.READABLE_NAME + "] to version [" + versionHash + "], error: ["+e.getMessage()+"].";
+ LOGGER.error(failMessage, e);
try
{
- TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "error", false);
+ TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, failMessage, "ok", "error", false);
}
catch (Exception ignore) { }
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/wrapperInterfaces/config/LangWrapper.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/wrapperInterfaces/config/LangWrapper.java
index 6306e1822..8acb0cadc 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/jar/wrapperInterfaces/config/LangWrapper.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/wrapperInterfaces/config/LangWrapper.java
@@ -23,48 +23,53 @@ import com.electronwill.nightconfig.core.Config;
import com.electronwill.nightconfig.core.io.ParsingMode;
import com.electronwill.nightconfig.json.JsonFormat;
import com.seibel.distanthorizons.core.jar.JarUtils;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.config.ILangWrapper;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.Locale;
public class LangWrapper implements ILangWrapper
{
public static final LangWrapper INSTANCE = new LangWrapper();
- private static final Config jsonObject = Config.inMemory();
- private static final Logger logger = LogManager.getLogger(LangWrapper.class.getSimpleName());
+
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
+ private static final Config JSON_OBJECT = Config.inMemory();
+
+
public static void init()
{
try
{
-// System.out.println(JarUtils.convertInputStreamToString(JarUtils.accessFile("assets/lod/lang/"+ Locale.getDefault().toString().toLowerCase()+".json")).replaceAll(":\\n.+?(?=\")",":"));
// FIXME: Is there something in the config that the parser cant read?
JsonFormat.fancyInstance().createParser().parse(
JarUtils.convertInputStreamToString(JarUtils.accessFile("assets/lod/lang/" + Locale.getDefault().toString().toLowerCase() + ".json")),
- jsonObject, ParsingMode.REPLACE
+ JSON_OBJECT, ParsingMode.REPLACE
);
}
catch (Exception e)
{
- logger.error("Failed to read lang file, error: ["+e.getMessage()+"]", e);
+ LOGGER.error("Failed to read lang file, error: ["+e.getMessage()+"]", e);
}
}
@Override
- public boolean langExists(String str)
- {
- return jsonObject.get(str) != null;
- }
+ public boolean langExists(String str) { return JSON_OBJECT.get(str) != null; }
@Override
public String getLang(String str)
{
- if (jsonObject.get(str) != null)
- return (String) jsonObject.get(str);
+ if (JSON_OBJECT.get(str) != null)
+ {
+ return (String) JSON_OBJECT.get(str);
+ }
else
+ {
return str;
+ }
}
+
+
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java
index d979bf2a1..f4fa1dd31 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhLevel.java
@@ -50,7 +50,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapp
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
import com.seibel.distanthorizons.coreapi.ModInfo;
import com.seibel.distanthorizons.coreapi.util.MathUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
@@ -66,7 +66,7 @@ import java.util.concurrent.locks.ReentrantLock;
public abstract class AbstractDhLevel implements IDhLevel
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** if this is null then the other handler is probably null too, but just in case */
@Nullable
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java
index ea0b3b7ea..7bef82b34 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/level/AbstractDhServerLevel.java
@@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import javax.annotation.Nullable;
import java.util.List;
@@ -34,7 +34,7 @@ import java.util.concurrent.*;
public abstract class AbstractDhServerLevel extends AbstractDhLevel implements IDhServerLevel
{
- protected static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ protected static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final ServerLevelModule serverside;
protected final IServerLevelWrapper serverLevelWrapper;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java b/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java
index 10c92bb30..1126cda96 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java
@@ -36,7 +36,7 @@ import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import javax.annotation.WillNotClose;
import java.io.Closeable;
@@ -45,7 +45,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class ClientLevelModule implements Closeable, AbstractDataSourceHandler.IDataSourceUpdateFunc
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private final IDhClientLevel clientLevel;
@@ -288,7 +288,7 @@ public class ClientLevelModule implements Closeable, AbstractDataSourceHandler.I
public static class ClientRenderState implements Closeable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final IClientLevelWrapper clientLevelWrapper;
public final LodQuadTree quadtree;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java
index 830392b9a..a3394d36b 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java
@@ -28,7 +28,7 @@ import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV
import com.seibel.distanthorizons.core.file.fullDatafile.RemoteFullDataSourceProvider;
import com.seibel.distanthorizons.core.file.structure.ISaveStructure;
import com.seibel.distanthorizons.core.generation.RemoteWorldRetrievalQueue;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.multiplayer.client.ClientNetworkState;
import com.seibel.distanthorizons.core.multiplayer.client.SyncOnLoadRequestQueue;
@@ -45,8 +45,6 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.Nullable;
import javax.annotation.CheckForNull;
@@ -61,9 +59,10 @@ import java.util.concurrent.TimeUnit;
/** The level used when connected to a server */
public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
- protected static final ConfigBasedLogger NETWORK_LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
+ private static final DhLogger NETWORK_LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
@@ -161,7 +160,7 @@ public class DhClientLevel extends AbstractDhLevel implements IDhClientLevel
try (FullDataSourceV2DTO dataSourceDto = this.networkState.fullDataPayloadReceiver.decodeDataSource(message.payload))
{
boolean isSameLevel = message.isSameLevelAs(this.levelWrapper);
- NETWORK_LOGGER.debug("Buffer {} isSameLevel: {}", message.payload.dtoBufferId, isSameLevel);
+ NETWORK_LOGGER.debug("Buffer ["+message.payload.dtoBufferId+"] isSameLevel: ["+isSameLevel+"]");
if (!isSameLevel)
{
return;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/ServerLevelModule.java b/core/src/main/java/com/seibel/distanthorizons/core/level/ServerLevelModule.java
index 6bd856c4e..51dfb5700 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/level/ServerLevelModule.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/level/ServerLevelModule.java
@@ -26,11 +26,11 @@ import com.seibel.distanthorizons.core.generation.BatchGenerator;
import com.seibel.distanthorizons.core.generation.WorldGenerationQueue;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.coreapi.DependencyInjection.WorldGeneratorInjector;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
public class ServerLevelModule implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private final IDhServerLevel parentServerLevel;
public final ISaveStructure saveStructure;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/WorldGenModule.java b/core/src/main/java/com/seibel/distanthorizons/core/level/WorldGenModule.java
index a9cee9f49..c1d55021d 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/level/WorldGenModule.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/level/WorldGenModule.java
@@ -33,7 +33,7 @@ import com.seibel.distanthorizons.core.util.objects.RollingAverage;
import com.seibel.distanthorizons.core.util.threading.PriorityTaskPicker;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.core.world.DhApiWorldProxy;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.Closeable;
import java.time.Duration;
@@ -49,7 +49,7 @@ import java.util.function.Supplier;
*/
public class WorldGenModule implements Closeable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private final GeneratedFullDataSourceProvider.IOnWorldGenCompleteListener onWorldGenCompleteListener;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/logging/ConfigBasedLogger.java b/core/src/main/java/com/seibel/distanthorizons/core/logging/ConfigBasedLogger.java
deleted file mode 100644
index 8b146c9c5..000000000
--- a/core/src/main/java/com/seibel/distanthorizons/core/logging/ConfigBasedLogger.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * This file is part of the Distant Horizons mod
- * licensed under the GNU LGPL v3 License.
- *
- * Copyright (C) 2020 James Seibel
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.seibel.distanthorizons.core.logging;
-
-import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerMode;
-import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.message.Message;
-
-import java.lang.ref.WeakReference;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.function.Supplier;
-
-public class ConfigBasedLogger
-{
- private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
-
-
- public static final List> loggers
- = Collections.synchronizedList(new LinkedList>());
-
- public static synchronized void updateAll()
- {
- loggers.removeIf((logger) -> logger.get() == null);
- loggers.forEach((logger) -> {
- ConfigBasedLogger l = logger.get();
- if (l != null)
- l.update();
- });
- }
-
- private EDhApiLoggerMode mode;
- private final Supplier getter;
- private final Logger logger;
-
- public ConfigBasedLogger(Logger logger, Supplier configQuery)
- {
- getter = configQuery;
- mode = getter.get();
- this.logger = logger;
- loggers.add(new WeakReference<>(this));
- }
-
- private static boolean isLessSpecificThan(Level _this, Level other)
- {
- return _this.intLevel() >= other.intLevel();
- }
-
- private String _throwableToDetailString(Throwable t)
- {
- StringBuilder sb = new StringBuilder();
- sb.append(t.toString()).append('\n');
- StackTraceElement[] stacks = t.getStackTrace();
-
- if (stacks == null || stacks.length == 0)
- return sb.append(" at {Stack trace unavailable}").toString();
-
- for (StackTraceElement stack : stacks)
- {
- sb.append(" at ").append(stack.toString()).append("\n");
- }
- return sb.toString();
- }
-
- public void update()
- {
- mode = getter.get();
- }
-
- public boolean canMaybeLog()
- {
- return mode != EDhApiLoggerMode.DISABLED;
- }
-
- public void log(Level level, String str, Object... param)
- {
- Message msg = param.length > 0
- ? this.logger.getMessageFactory().newMessage(str, param)
- : this.logger.getMessageFactory().newMessage("{}", str);
-
- String msgStr = msg.getFormattedMessage();
- if (isLessSpecificThan(mode.levelForFile, level))
- {
- Level logLevel = isLessSpecificThan(level, Level.INFO) ? Level.INFO : level;
- if (param.length > 0 && param[param.length - 1] instanceof Throwable)
- logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
- else
- logger.log(logLevel, msgStr);
- }
-
- if (MC != null && isLessSpecificThan(mode.levelForChat, level))
- {
- if (param.length > 0 && param[param.length - 1] instanceof Throwable)
- MC.logToChat(level, msgStr + "\n" +
- _throwableToDetailString(((Throwable) param[param.length - 1])));
- else
- MC.logToChat(level, msgStr);
- }
- }
-
- public void error(String str, Object... param) { this.log(Level.ERROR, str, param); }
- public void warn(String str, Object... param) { this.log(Level.WARN, str, param); }
- public void info(String str, Object... param) { this.log(Level.INFO, str, param); }
- public void debug(String str, Object... param) { this.log(Level.DEBUG, str, param); }
- public void trace(String str, Object... param) { this.log(Level.TRACE, str, param); }
-
-}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/logging/ConfigBasedSpamLogger.java b/core/src/main/java/com/seibel/distanthorizons/core/logging/ConfigBasedSpamLogger.java
deleted file mode 100644
index 06b3b1c3c..000000000
--- a/core/src/main/java/com/seibel/distanthorizons/core/logging/ConfigBasedSpamLogger.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * This file is part of the Distant Horizons mod
- * licensed under the GNU LGPL v3 License.
- *
- * Copyright (C) 2020 James Seibel
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.seibel.distanthorizons.core.logging;
-
-import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerMode;
-import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.message.Message;
-
-import java.lang.ref.WeakReference;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Supplier;
-
-public class ConfigBasedSpamLogger
-{
- private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
-
- public static final List> loggers
- = Collections.synchronizedList(new LinkedList>());
-
- public static synchronized void updateAll(boolean flush)
- {
- loggers.removeIf((logger) -> logger.get() == null);
- loggers.forEach((logger) -> {
- ConfigBasedSpamLogger l = logger.get();
- if (l != null)
- l.update();
- if (l != null && flush)
- l.reset();
- });
- }
-
- private EDhApiLoggerMode mode;
- private final Supplier getter;
- private final int maxLogCount;
- private final AtomicInteger logTries = new AtomicInteger(0);
- private final Logger logger;
-
- public ConfigBasedSpamLogger(Logger logger, Supplier configQuery, int maxLogPerSec)
- {
- getter = configQuery;
- mode = getter.get();
- maxLogCount = maxLogPerSec;
- this.logger = logger;
- loggers.add(new WeakReference<>(this));
- }
-
- private static boolean isLessSpecificThan(Level _this, Level other)
- {
- return _this.intLevel() >= other.intLevel();
- }
-
- public void reset()
- {
- logTries.set(0);
- }
-
- public boolean canMaybeLog()
- {
- return mode != EDhApiLoggerMode.DISABLED && logTries.get() < maxLogCount;
- }
-
- public void update()
- {
- mode = getter.get();
- }
-
- private String _throwableToDetailString(Throwable t)
- {
- StringBuilder sb = new StringBuilder();
- sb.append(t.toString()).append('\n');
- StackTraceElement[] stacks = t.getStackTrace();
-
- if (stacks == null || stacks.length == 0)
- return sb.append(" at {Stack trace unavailable}").toString();
-
- for (StackTraceElement stack : stacks)
- {
- sb.append(" at ").append(stack.toString()).append("\n");
- }
- return sb.toString();
- }
-
- public void log(Level level, String str, Object... param)
- {
- if (logTries.get() >= maxLogCount)
- return;
-
- Message msg = logger.getMessageFactory().newMessage(str, param);
- String msgStr = msg.getFormattedMessage();
- if (isLessSpecificThan(mode.levelForFile, level))
- {
- Level logLevel = isLessSpecificThan(level, Level.INFO) ? Level.INFO : level;
- if (param.length > 0 && param[param.length - 1] instanceof Throwable)
- logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
- else
- logger.log(logLevel, msgStr);
- }
- if (isLessSpecificThan(mode.levelForChat, level))
- {
- if (param.length > 0 && param[param.length - 1] instanceof Throwable)
- MC.logToChat(level, msgStr + "\n" +
- _throwableToDetailString(((Throwable) param[param.length - 1])));
- else
- MC.logToChat(level, msgStr);
- }
- }
-
- public void error(String str, Object... param)
- {
- log(Level.ERROR, str, param);
- }
-
- public void warn(String str, Object... param)
- {
- log(Level.WARN, str, param);
- }
-
- public void info(String str, Object... param)
- {
- log(Level.INFO, str, param);
- }
-
- public void debug(String str, Object... param)
- {
- log(Level.DEBUG, str, param);
- }
-
- public void trace(String str, Object... param)
- {
- log(Level.TRACE, str, param);
- }
-
- public void incLogTries()
- {
- logTries.getAndIncrement();
- }
-
- public void logInc(Level level, String str, Object... param)
- {
- if (logTries.getAndIncrement() >= maxLogCount)
- return;
-
- Message msg = logger.getMessageFactory().newMessage(str, param);
- String msgStr = msg.getFormattedMessage();
- if (isLessSpecificThan(mode.levelForFile, level))
- {
- Level logLevel = isLessSpecificThan(level, Level.INFO) ? Level.INFO : level;
- if (param.length > 0 && param[param.length - 1] instanceof Throwable)
- logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
- else
- logger.log(logLevel, msgStr);
- }
- if (isLessSpecificThan(mode.levelForChat, level))
- {
- if (param.length > 0 && param[param.length - 1] instanceof Throwable)
- MC.logToChat(level, msgStr + "\n" +
- _throwableToDetailString(((Throwable) param[param.length - 1])));
- else
- MC.logToChat(level, msgStr);
- }
- }
-
- public void errorInc(String str, Object... param)
- {
- logInc(Level.ERROR, str, param);
- }
-
- public void warnInc(String str, Object... param)
- {
- logInc(Level.WARN, str, param);
- }
-
- public void infoInc(String str, Object... param)
- {
- logInc(Level.INFO, str, param);
- }
-
- public void debugInc(String str, Object... param)
- {
- logInc(Level.DEBUG, str, param);
- }
-
- public void traceInc(String str, Object... param)
- {
- logInc(Level.TRACE, str, param);
- }
-
-}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLogger.java b/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLogger.java
new file mode 100644
index 000000000..c3bc9e12d
--- /dev/null
+++ b/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLogger.java
@@ -0,0 +1,343 @@
+/*
+ * This file is part of the Distant Horizons mod
+ * licensed under the GNU LGPL v3 License.
+ *
+ * Copyright (C) 2020 James Seibel
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+package com.seibel.distanthorizons.core.logging;
+
+import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerLevel;
+import com.seibel.distanthorizons.core.config.Config;
+import com.seibel.distanthorizons.core.config.listeners.IConfigListener;
+import com.seibel.distanthorizons.core.config.types.ConfigEntry;
+import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.util.ThreadUtil;
+import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
+import com.seibel.distanthorizons.coreapi.ModInfo;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.message.Message;
+import org.jetbrains.annotations.Nullable;
+
+import java.lang.ref.WeakReference;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * should only be created in a static context,
+ * otherwise leaks will occur.
+ *
+ * @see DhLoggerBuilder
+ */
+public class DhLogger implements IConfigListener
+{
+ private static final List> LOGGER_REF_LIST = Collections.synchronizedList(new LinkedList<>());
+ private static final ThreadPoolExecutor TICKER_THREAD = ThreadUtil.makeSingleDaemonThreadPool("Log Ticker");
+
+ /**
+ * This logger uses the base 4J logger so we don't have to worry about
+ * setup order and can track errors when setting up DH loggers.
+ *
+ * Yo dog, I heard you liked loggers, so I put a logger in your logger.
+ */
+ private static final Logger LOGGER = LogManager.getLogger();
+
+
+ private static IMinecraftClientWrapper mc_client = null;
+
+ // both global configs start at "all" so we don't accidentally loose any logging messages
+ private static EDhApiLoggerLevel globalMaxFileLevel = EDhApiLoggerLevel.ALL;
+ private static EDhApiLoggerLevel globalMaxChatLevel = EDhApiLoggerLevel.ALL;
+
+
+ private EDhApiLoggerLevel fileLevel;
+ private EDhApiLoggerLevel chatLevel;
+
+ private boolean delayedSetupComplete = false;
+
+
+ @Nullable
+ private final ConfigEntry fileLevelConfig;
+ @Nullable
+ private final ConfigEntry chatLevelConfig;
+
+ /** if less than 0 then this logger won't be rate limited */
+ private final int maxLogCountPerSecond;
+ private final AtomicInteger logCountsThisSecondRef = new AtomicInteger(0);
+ private final Logger logger;
+
+
+
+ //==============//
+ // static setup //
+ //==============//
+
+ static { TICKER_THREAD.execute(() -> runTickerLoop()); }
+
+ /**
+ * needs to be run at a later date since loggers
+ * are created before the config is set up.
+ */
+ public static void runDelayedConfigSetup()
+ {
+ LOGGER.info("Applying config to loggers");
+
+ LOGGER_REF_LIST.forEach((loggerRef) ->
+ {
+ DhLogger logger = loggerRef.get();
+
+ if (logger != null
+ && !logger.delayedSetupComplete)
+ {
+ logger.delayedSetupComplete = true;
+
+ Config.Common.Logging.globalChatMaxLevel.addListener(logger);
+ Config.Common.Logging.globalFileMaxLevel.addListener(logger);
+
+ logger.onConfigValueSet();
+ }
+ });
+ }
+
+
+
+ //=============//
+ // constructor //
+ //=============//
+
+ public DhLogger(String loggerName,
+ @Nullable ConfigEntry chatLevelConfig, @Nullable ConfigEntry fileLevelConfig,
+ int maxLogPerSec)
+ {
+ this.logger = LogManager.getLogger(ModInfo.NAME + "-" + loggerName);
+
+ this.maxLogCountPerSecond = maxLogPerSec;
+
+
+ // chat config //
+
+ this.chatLevelConfig = chatLevelConfig;
+ if (this.chatLevelConfig != null)
+ {
+ this.chatLevel = this.chatLevelConfig.get();
+ this.chatLevelConfig.addListener(this);
+ }
+ else
+ {
+ // chat messages should only be sent when explicitly desired
+ this.chatLevel = EDhApiLoggerLevel.DISABLED;
+ }
+
+
+ // file config //
+
+ this.fileLevelConfig = fileLevelConfig;
+ if (this.fileLevelConfig != null)
+ {
+ this.fileLevel = this.fileLevelConfig.get();
+ this.fileLevelConfig.addListener(this);
+ }
+ else
+ {
+ this.fileLevel = EDhApiLoggerLevel.ALL;
+ }
+
+
+ LOGGER_REF_LIST.add(new WeakReference<>(this));
+ }
+
+
+
+ //========//
+ // events //
+ //========//
+
+ @Override
+ public void onConfigValueSet()
+ {
+ if (this.fileLevelConfig != null)
+ {
+ this.fileLevel = this.fileLevelConfig.get();
+ }
+
+ if (this.chatLevelConfig != null)
+ {
+ this.chatLevel = this.chatLevelConfig.get();
+ }
+
+ globalMaxFileLevel = Config.Common.Logging.globalFileMaxLevel.get();
+ globalMaxChatLevel = Config.Common.Logging.globalChatMaxLevel.get();
+ }
+
+
+
+ //===============//
+ // log filtering //
+ //===============//
+
+ public boolean canLog()
+ {
+ // is this logger enabled?
+ if (this.fileLevel == EDhApiLoggerLevel.DISABLED
+ && this.chatLevel == EDhApiLoggerLevel.DISABLED)
+ {
+ return false;
+ }
+
+ // is logging globally enabled?
+ if (globalMaxFileLevel == EDhApiLoggerLevel.DISABLED
+ && globalMaxChatLevel == EDhApiLoggerLevel.DISABLED)
+ {
+ return false;
+ }
+
+ // has this logger run to many times this second already?
+ if (this.maxLogCountPerSecond > 0
+ && this.logCountsThisSecondRef.get() >= this.maxLogCountPerSecond)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+
+
+ //=========//
+ // logging //
+ //=========//
+
+ public void fatal(String str, Object... param) { this.log(Level.FATAL, str, param); }
+ public void error(String str, Object... param) { this.log(Level.ERROR, str, param); }
+ public void warn(String str, Object... param){ this.log(Level.WARN, str, param); }
+ public void info(String str, Object... param) { this.log(Level.INFO, str, param); }
+ public void debug(String str, Object... param) { this.log(Level.DEBUG, str, param); }
+ public void trace(String str, Object... param) { this.log(Level.TRACE, str, param); }
+
+ public void log(Level level, String str, Object... param)
+ {
+ if (!this.canLog())
+ {
+ return;
+ }
+
+
+ Message msg = this.logger.getMessageFactory().newMessage(str, param);
+ String msgStr = msg.getFormattedMessage();
+
+ boolean messageLogged = false;
+
+
+ // file
+ if (canLogThisLevel(this.fileLevel.level, globalMaxFileLevel.level, level))
+ {
+ // by default MC's console/file logging config doesn't include debug or trace
+ // logs, so to make sure our messages are included we need to set any lower levels as "info"
+ Level logLevel = loggingLevelIsLessSpecificThan(level, Level.INFO) ? Level.INFO : level;
+
+ if (param.length > 0
+ && param[param.length - 1] instanceof Throwable)
+ {
+ this.logger.log(logLevel, msgStr, (Throwable) param[param.length - 1]);
+ }
+ else
+ {
+ this.logger.log(logLevel, msgStr);
+ }
+
+ messageLogged = true;
+ }
+
+ // chat
+ if (canLogThisLevel(this.chatLevel.level, globalMaxChatLevel.level, level))
+ {
+ // lazy initialization since loggers may be created before the wrapper has been bound
+ if (mc_client == null)
+ {
+ mc_client = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
+ }
+
+ if (mc_client != null)
+ {
+ mc_client.logToChat(level, msgStr);
+ messageLogged = true;
+ }
+ }
+
+
+ if (messageLogged)
+ {
+ this.logCountsThisSecondRef.incrementAndGet();
+ }
+ }
+ private static boolean canLogThisLevel(Level thisLoggingLevel, Level thisGlobalLoggingLevel, Level requestedLogLevel)
+ {
+ // we can only continue if this logger's level and the global level
+ // are at the same or a higher level than the requested level
+ return thisLoggingLevel.intLevel() >= requestedLogLevel.intLevel()
+ && thisGlobalLoggingLevel.intLevel() >= requestedLogLevel.intLevel();
+ }
+ private static boolean loggingLevelIsLessSpecificThan(Level thisLoggingLevel, Level requestedLogLevel)
+ { return thisLoggingLevel.intLevel() >= requestedLogLevel.intLevel(); }
+
+
+
+ //===============//
+ // static ticker //
+ //===============//
+
+ private static void runTickerLoop()
+ {
+ while (true)
+ {
+ try
+ {
+ // tick once every second
+ Thread.sleep(1_000);
+
+ LOGGER_REF_LIST.removeIf((logger) ->
+ {
+ boolean loggerGarbageCollected = logger.get() == null;
+ if (loggerGarbageCollected)
+ {
+ LOGGER.warn("Logger garbage collected. Loggers should only be created in static contexts otherwise memory leaks may occur.");
+ }
+ return loggerGarbageCollected;
+ });
+ LOGGER_REF_LIST.forEach((loggerRef) ->
+ {
+ DhLogger logger = loggerRef.get();
+ if (logger != null)
+ {
+ // reset the number of logs for this second
+ logger.logCountsThisSecondRef.set(0);
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ LOGGER.error("Unexpected error in ticker thread: [" + e.getMessage() + "].", e);
+ }
+ }
+ }
+
+
+
+}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLoggerBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLoggerBuilder.java
index 1f0b02ac2..759dcc053 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLoggerBuilder.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/logging/DhLoggerBuilder.java
@@ -19,52 +19,37 @@
package com.seibel.distanthorizons.core.logging;
+import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerLevel;
+import com.seibel.distanthorizons.core.config.listeners.IConfigListener;
+import com.seibel.distanthorizons.core.config.types.AbstractConfigBase;
+import com.seibel.distanthorizons.core.config.types.ConfigEntry;
import com.seibel.distanthorizons.coreapi.ModInfo;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.ArrayList;
+import java.util.Arrays;
/**
- * Used to create loggers with specific names.
- *
- * @author James Seibel
- * @version 2022-4-24
+ * @see DhLogger
*/
public class DhLoggerBuilder
{
- /**
- * Creates a logger in the format
- * "ModInfo.Name-className"
- * For example:
- * "DistantHorizons-ReflectionHandler"
- *
- * The suggested way to use this method is like this:
- *
- * private static final Logger LOGGER = DhLoggerBuilder.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
- *
- * By using MethodHandles you don't have to manually enter the class name,
- * Java figures that out for you. Even in a static context.
- *
- * @param className name of the class this logger will be named after.
- */
- public static Logger getLogger(String className)
- {
- return LogManager.getLogger(ModInfo.NAME + "-" + className);
- }
+ private String name;
+ private @Nullable ConfigEntry chatLevelConfig;
+ private @Nullable ConfigEntry fileLevelConfig;
+ private int maxLogPerSec = -1;
- /** Returns a logger for the given class. */
- public static Logger getLogger(Class> clazz)
- {
- return LogManager.getLogger(ModInfo.NAME + "-" + clazz.getSimpleName());
- }
- /** Attempts to return the logger for this containing class. */
- public static Logger getLogger()
- {
- return LogManager.getLogger(ModInfo.NAME + "-" + getCallingClassName());
- }
+ //=============//
+ // constructor //
+ //=============//
+
+ public DhLoggerBuilder() { this.name = ModInfo.NAME + "-" + getCallingClassName(); }
/** @return "??" if no name could be found */
- public static String getCallingClassName()
+ private static String getCallingClassName()
{
StackTraceElement[] stElements = Thread.currentThread().getStackTrace();
String callerClassName = "??";
@@ -83,4 +68,57 @@ public class DhLoggerBuilder
}
+
+ //===========//
+ // variables //
+ //===========//
+
+ public DhLoggerBuilder name(String name)
+ {
+ this.name = ModInfo.NAME + "-" + name;
+ return this;
+ }
+
+ public DhLoggerBuilder chatLevelConfig(ConfigEntry chatLevelConfig)
+ {
+ this.chatLevelConfig = chatLevelConfig;
+ return this;
+ }
+
+ public DhLoggerBuilder fileLevelConfig(ConfigEntry fileLevelConfig)
+ {
+ this.fileLevelConfig = fileLevelConfig;
+ return this;
+ }
+
+ public DhLoggerBuilder maxCountPerSecond(int maxLogPerSec)
+ {
+ this.maxLogPerSec = maxLogPerSec;
+ return this;
+ }
+
+
+
+ //=======//
+ // build //
+ //=======//
+
+ public DhLogger build()
+ {
+ try
+ {
+ return new DhLogger(
+ this.name,
+ this.chatLevelConfig, this.fileLevelConfig,
+ this.maxLogPerSec
+ );
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+
+
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/logging/SpamReducedLogger.java b/core/src/main/java/com/seibel/distanthorizons/core/logging/SpamReducedLogger.java
deleted file mode 100644
index c96b46d15..000000000
--- a/core/src/main/java/com/seibel/distanthorizons/core/logging/SpamReducedLogger.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * This file is part of the Distant Horizons mod
- * licensed under the GNU LGPL v3 License.
- *
- * Copyright (C) 2020 James Seibel
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see .
- */
-
-package com.seibel.distanthorizons.core.logging;
-
-import java.lang.invoke.MethodHandles;
-import java.lang.ref.WeakReference;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-public class SpamReducedLogger
-{
- private static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
-
- public static final List> loggers
- = Collections.synchronizedList(new LinkedList>());
-
- public static synchronized void flushAll()
- {
- loggers.removeIf((logger) -> logger.get() == null);
- loggers.forEach((logger) -> {
- SpamReducedLogger l = logger.get();
- if (l != null)
- l.reset();
- });
- }
-
- private final int maxLogCount;
- private final AtomicInteger logTries = new AtomicInteger(0);
-
- public SpamReducedLogger(int maxLogPerSec)
- {
- maxLogCount = maxLogPerSec;
- loggers.add(new WeakReference(this));
- }
-
- private static boolean isLessSpecificThan(Level _this, Level other)
- {
- return _this.intLevel() >= other.intLevel();
- }
-
- public void reset()
- {
- logTries.set(0);
- }
-
- public boolean canMaybeLog()
- {
- return logTries.get() < maxLogCount;
- }
-
- public void log(Level level, String str, Object... param)
- {
- if (logTries.get() >= maxLogCount)
- return;
- LOGGER.log(isLessSpecificThan(level, Level.INFO) ? Level.INFO : level, str, param);
- }
-
- public void error(String str, Object... param)
- {
- log(Level.ERROR, str, param);
- }
-
- public void warn(String str, Object... param)
- {
- log(Level.WARN, str, param);
- }
-
- public void info(String str, Object... param)
- {
- log(Level.INFO, str, param);
- }
-
- public void debug(String str, Object... param)
- {
- log(Level.DEBUG, str, param);
- }
-
- public void trace(String str, Object... param)
- {
- log(Level.TRACE, str, param);
- }
-
- public void incLogTries()
- {
- logTries.getAndIncrement();
- }
-
- public void logInc(Level level, String str, Object... param)
- {
- if (logTries.getAndIncrement() >= maxLogCount)
- return;
- LOGGER.log(isLessSpecificThan(level, Level.INFO) ? Level.INFO : level, str, param);
- }
-
- public void errorInc(String str, Object... param)
- {
- logInc(Level.ERROR, str, param);
- }
-
- public void warnInc(String str, Object... param)
- {
- logInc(Level.WARN, str, param);
- }
-
- public void infoInc(String str, Object... param)
- {
- logInc(Level.INFO, str, param);
- }
-
- public void debugInc(String str, Object... param)
- {
- logInc(Level.DEBUG, str, param);
- }
-
- public void traceInc(String str, Object... param)
- {
- logInc(Level.TRACE, str, param);
- }
-
-}
\ No newline at end of file
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/logging/f3/F3Screen.java b/core/src/main/java/com/seibel/distanthorizons/core/logging/f3/F3Screen.java
index f3267ea17..97cc9a0e5 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/logging/f3/F3Screen.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/logging/f3/F3Screen.java
@@ -24,6 +24,7 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.jar.ModJarInfo;
import com.seibel.distanthorizons.core.level.IDhLevel;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pooling.PhantomArrayListPool;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
@@ -35,7 +36,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftCli
import com.seibel.distanthorizons.coreapi.ModInfo;
import com.seibel.distanthorizons.coreapi.util.StringUtil;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.text.NumberFormat;
import java.util.*;
@@ -43,7 +44,7 @@ import java.util.concurrent.ThreadPoolExecutor;
public class F3Screen
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
public static final NumberFormat NUMBER_FORMAT = NumberFormat.getIntegerInstance();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataNetworkRequestQueue.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataNetworkRequestQueue.java
index e0fe4acc3..cc8294f3c 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataNetworkRequestQueue.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/AbstractFullDataNetworkRequestQueue.java
@@ -7,7 +7,8 @@ import com.seibel.distanthorizons.core.config.types.ConfigEntry;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.level.DhClientLevel;
-import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.network.exceptions.RateLimitedException;
import com.seibel.distanthorizons.core.network.exceptions.RequestOutOfRangeException;
import com.seibel.distanthorizons.core.network.exceptions.RequestRejectedException;
@@ -25,7 +26,6 @@ import com.seibel.distanthorizons.core.util.ratelimiting.SupplierBasedRateLimite
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.core.world.DhApiWorldProxy;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
-import org.apache.logging.log4j.LogManager;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
@@ -39,8 +39,10 @@ import java.util.function.Consumer;
public abstract class AbstractFullDataNetworkRequestQueue implements IDebugRenderable, AutoCloseable
{
- private static final ConfigBasedSpamLogger LOGGER = new ConfigBasedSpamLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get(), 3);
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .maxCountPerSecond(3)
+ .build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
@@ -364,7 +366,7 @@ public abstract class AbstractFullDataNetworkRequestQueue implements IDebugRende
if (removeIf.accept(pos))
{
- LOGGER.debug("Removing request " + mapEntry.getKey() + "...");
+ LOGGER.debug("Removing request [" + mapEntry.getKey() + "]...");
entry.future.cancel(false);
if (entry.networkDataSourceFuture != null)
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java
index 58ac15d0b..3d51b2e48 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java
@@ -3,7 +3,8 @@ package com.seibel.distanthorizons.core.multiplayer.client;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.config.listeners.ConfigChangeListener;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.multiplayer.config.SessionConfig;
import com.seibel.distanthorizons.core.multiplayer.fullData.FullDataPayloadReceiver;
import com.seibel.distanthorizons.core.network.event.ScopedNetworkEventSource;
@@ -17,7 +18,6 @@ import com.seibel.distanthorizons.core.network.messages.fullData.FullDataPartial
import com.seibel.distanthorizons.core.network.session.NetworkSession;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.LogManager;
import org.jetbrains.annotations.Nullable;
import java.io.Closeable;
@@ -25,8 +25,9 @@ import java.util.List;
public class ClientNetworkState implements Closeable
{
- protected static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ protected static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/fullData/FullDataPayloadReceiver.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/fullData/FullDataPayloadReceiver.java
index 540562698..e80eff418 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/fullData/FullDataPayloadReceiver.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/fullData/FullDataPayloadReceiver.java
@@ -1,27 +1,24 @@
package com.seibel.distanthorizons.core.multiplayer.fullData;
import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.RemovalCause;
-import com.google.common.cache.RemovalNotification;
import com.seibel.distanthorizons.core.config.Config;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.network.INetworkObject;
import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSplitMessage;
import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO;
import com.seibel.distanthorizons.core.util.LodUtil;
import io.netty.buffer.CompositeByteBuf;
-import io.netty.buffer.Unpooled;
import io.netty.buffer.UnpooledByteBufAllocator;
-import org.apache.logging.log4j.LogManager;
-import java.util.Objects;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
public class FullDataPayloadReceiver implements AutoCloseable
{
- private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
private final ConcurrentMap buffersById = CacheBuilder.newBuilder()
.expireAfterAccess(10, TimeUnit.SECONDS)
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java
index 47022f7ee..2e523ea25 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/server/FullDataSourceRequestHandler.java
@@ -5,7 +5,8 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
import com.seibel.distanthorizons.core.file.fullDatafile.GeneratedFullDataSourceProvider;
import com.seibel.distanthorizons.core.level.AbstractDhServerLevel;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.multiplayer.fullData.FullDataPayload;
import com.seibel.distanthorizons.core.network.exceptions.RequestRejectedException;
import com.seibel.distanthorizons.core.network.exceptions.SectionRequiresSplittingException;
@@ -14,7 +15,6 @@ import com.seibel.distanthorizons.core.network.messages.fullData.FullDataSourceR
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.sql.dto.BeaconBeamDTO;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
-import org.apache.logging.log4j.LogManager;
import java.util.List;
import java.util.Map;
@@ -23,8 +23,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class FullDataSourceRequestHandler
{
- private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
private final AbstractDhServerLevel serverLevel;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/event/AbstractNetworkEventSource.java b/core/src/main/java/com/seibel/distanthorizons/core/network/event/AbstractNetworkEventSource.java
index e6d7dffcb..3cdd2710e 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/network/event/AbstractNetworkEventSource.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/network/event/AbstractNetworkEventSource.java
@@ -21,7 +21,8 @@ package com.seibel.distanthorizons.core.network.event;
import com.google.common.cache.CacheBuilder;
import com.seibel.distanthorizons.core.config.Config;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.network.event.internal.AbstractInternalEvent;
import com.seibel.distanthorizons.core.network.messages.AbstractNetworkMessage;
import com.seibel.distanthorizons.core.network.messages.AbstractTrackableMessage;
@@ -30,7 +31,6 @@ import com.seibel.distanthorizons.core.network.session.SessionClosedException;
import com.seibel.distanthorizons.core.network.messages.requests.CancelMessage;
import com.seibel.distanthorizons.core.network.messages.requests.ExceptionMessage;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.LogManager;
import java.io.InvalidClassException;
import java.util.Collections;
@@ -40,8 +40,9 @@ import java.util.function.Consumer;
public abstract class AbstractNetworkEventSource
{
- private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
/**
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/session/NetworkSession.java b/core/src/main/java/com/seibel/distanthorizons/core/network/session/NetworkSession.java
index 82360c20a..e9ec6b7d3 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/network/session/NetworkSession.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/network/session/NetworkSession.java
@@ -2,7 +2,8 @@ package com.seibel.distanthorizons.core.network.session;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.network.event.AbstractNetworkEventSource;
import com.seibel.distanthorizons.core.network.event.internal.CloseInternalEvent;
import com.seibel.distanthorizons.core.network.event.internal.ProtocolErrorInternalEvent;
@@ -11,7 +12,6 @@ import com.seibel.distanthorizons.core.network.messages.AbstractTrackableMessage
import com.seibel.distanthorizons.core.network.messages.base.CloseReasonMessage;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IPluginPacketSender;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.IServerPlayerWrapper;
-import org.apache.logging.log4j.LogManager;
import org.jetbrains.annotations.Nullable;
import java.util.concurrent.CompletableFuture;
@@ -21,8 +21,9 @@ import java.util.function.Consumer;
public class NetworkSession extends AbstractNetworkEventSource
{
- private static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(),
- () -> Config.Common.Logging.logNetworkEvent.get());
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logNetworkEventToFile)
+ .build();
private static final IPluginPacketSender PACKET_SENDER = SingletonInjector.INSTANCE.get(IPluginPacketSender.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/pooling/AbstractPhantomArrayList.java b/core/src/main/java/com/seibel/distanthorizons/core/pooling/AbstractPhantomArrayList.java
index 9ee37500e..304a0c7b8 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/pooling/AbstractPhantomArrayList.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/pooling/AbstractPhantomArrayList.java
@@ -1,7 +1,8 @@
package com.seibel.distanthorizons.core.pooling;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.lang.ref.PhantomReference;
@@ -18,7 +19,7 @@ import java.lang.ref.PhantomReference;
*/
public abstract class AbstractPhantomArrayList implements AutoCloseable
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private final PhantomArrayListPool phantomArrayListPool;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/pooling/PhantomArrayListPool.java b/core/src/main/java/com/seibel/distanthorizons/core/pooling/PhantomArrayListPool.java
index caff83106..2b8d4573e 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/pooling/PhantomArrayListPool.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/pooling/PhantomArrayListPool.java
@@ -2,6 +2,7 @@ package com.seibel.distanthorizons.core.pooling;
import com.seibel.distanthorizons.core.api.internal.ClientApi;
import com.seibel.distanthorizons.core.config.Config;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
import com.seibel.distanthorizons.core.util.ThreadUtil;
@@ -11,7 +12,7 @@ import com.seibel.distanthorizons.coreapi.util.StringUtil;
import it.unimi.dsi.fastutil.bytes.ByteArrayList;
import it.unimi.dsi.fastutil.longs.LongArrayList;
import it.unimi.dsi.fastutil.shorts.ShortArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -54,7 +55,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/
public class PhantomArrayListPool
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* the recycler thread needs to be triggered relatively frequently to prevent
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java b/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java
index 8083602fc..b481f638a 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/LodQuadTree.java
@@ -28,6 +28,7 @@ import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.ColumnR
import com.seibel.distanthorizons.core.enums.EDhDirection;
import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2;
import com.seibel.distanthorizons.core.level.IDhClientLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos2D;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -43,7 +44,7 @@ import com.seibel.distanthorizons.core.util.objects.quadTree.QuadTree;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.coreapi.util.MathUtil;
import it.unimi.dsi.fastutil.longs.LongIterator;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import javax.annotation.WillNotClose;
@@ -64,10 +65,9 @@ public class LodQuadTree extends QuadTree implements IDebugRen
{
public static final byte TREE_LOWEST_DETAIL_LEVEL = ColumnRenderSource.SECTION_SIZE_OFFSET;
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** there should only ever be one {@link LodQuadTree} so having the thread static should be fine */
private static final ThreadPoolExecutor FULL_DATA_RETRIEVAL_QUEUE_THREAD = ThreadUtil.makeSingleThreadPool("QuadTree Full Data Retrieval Queue Populator");
- private static final int WORLD_GEN_QUEUE_UPDATE_DELAY_IN_MS = 1_000;
public final int blockRenderDistanceDiameter;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java
index 2b9f3a850..ed4914d59 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/LodRenderSection.java
@@ -33,6 +33,7 @@ import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.enums.EDhDirection;
import com.seibel.distanthorizons.core.file.fullDatafile.FullDataSourceProviderV2;
import com.seibel.distanthorizons.core.level.IDhClientLevel;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos2D;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -49,7 +50,7 @@ import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import javax.annotation.WillNotClose;
@@ -66,7 +67,7 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class LodRenderSection implements IDebugRenderable, AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java
index ad0aa7956..4a8f8038b 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/RenderBufferHandler.java
@@ -28,6 +28,7 @@ import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.ColumnR
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.enums.EDhDirection;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
import com.seibel.distanthorizons.core.pos.DhLodPos;
@@ -46,7 +47,7 @@ import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IOverri
import com.seibel.distanthorizons.core.util.math.Mat4f;
import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.util.math.Vec3f;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.joml.Matrix4f;
import org.joml.Matrix4fc;
import org.lwjgl.opengl.GL32;
@@ -62,7 +63,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/
public class RenderBufferHandler implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
private static final IMinecraftGLWrapper GLMC = SingletonInjector.INSTANCE.get(IMinecraftGLWrapper.class);
@@ -421,7 +422,7 @@ public class RenderBufferHandler implements AutoCloseable
{
countText += "/" + F3Screen.NUMBER_FORMAT.format(this.visibleBufferCount + this.culledBufferCount);
}
- return LodUtil.formatLog("VBO Render Count: " + countText);
+ return "VBO Render Count: [" + countText + "]";
}
public String getShadowPassRenderDebugMenuString()
{
@@ -436,7 +437,7 @@ public class RenderBufferHandler implements AutoCloseable
{
countText += "/" + F3Screen.NUMBER_FORMAT.format(this.shadowVisibleBufferCount + this.shadowCulledBufferCount);
}
- return LodUtil.formatLog("Shadow VBO Render Count: " + countText);
+ return "Shadow VBO Render Count: [" + countText + "]";
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLProxy.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLProxy.java
index be0061b8a..2286a3429 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLProxy.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLProxy.java
@@ -24,13 +24,11 @@ import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.jar.EPlatform;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.objects.GLMessages.*;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.opengl.GL;
import org.lwjgl.opengl.GL32;
@@ -51,9 +49,10 @@ public class GLProxy
{
private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
- public static final ConfigBasedLogger GL_LOGGER = new ConfigBasedLogger(LogManager.getLogger(GLProxy.class),
- () -> Config.Common.Logging.logRendererGLEvent.get());
+ public static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererGLEventToFile)
+ .chatLevelConfig(Config.Common.Logging.logRendererGLEventToChat)
+ .build();
public static final Set LOGGED_GL_MESSAGES = Collections.newSetFromMap(new ConcurrentHashMap());
@@ -113,8 +112,8 @@ public class GLProxy
throw new IllegalStateException(GLProxy.class.getSimpleName() + " was created outside the render thread!");
}
- GL_LOGGER.info("Creating " + GLProxy.class.getSimpleName() + "... If this is the last message you see there must have been an OpenGL error.");
- GL_LOGGER.info("Lod Render OpenGL version [" + GL32.glGetString(GL32.GL_VERSION) + "].");
+ LOGGER.info("Creating " + GLProxy.class.getSimpleName() + "... If this is the last message you see there must have been an OpenGL error.");
+ LOGGER.info("Lod Render OpenGL version [" + GL32.glGetString(GL32.GL_VERSION) + "].");
@@ -137,7 +136,7 @@ public class GLProxy
"Additional info:\n" + supportedVersionInfo;
MC.crashMinecraft(errorMessage, new UnsupportedOperationException("Distant Horizon OpenGL requirements not met"));
}
- GL_LOGGER.info("minecraftGlCapabilities:\n" + this.versionInfoToString(this.glCapabilities));
+ LOGGER.info("minecraftGlCapabilities:\n" + this.versionInfoToString(this.glCapabilities));
if (Config.Client.Advanced.Debugging.OpenGl.overrideVanillaGLLogger.get())
{
@@ -158,7 +157,7 @@ public class GLProxy
this.bufferStorageSupported = this.glCapabilities.glBufferStorage != 0L; // Nullptr
if (!this.bufferStorageSupported)
{
- GL_LOGGER.info("This GPU doesn't support Buffer Storage (OpenGL 4.4), falling back to using other methods.");
+ LOGGER.info("This GPU doesn't support Buffer Storage (OpenGL 4.4), falling back to using other methods.");
}
// Check if we can use the make-over version of Vertex Attribute, which is available in GL4.3 or after
@@ -191,7 +190,7 @@ public class GLProxy
// form of uploading
this.preferredUploadMethod = EDhApiGpuUploadMethod.DATA;
}
- GL_LOGGER.info("GPU Vendor [" + vendor + "] with OS [" + EPlatform.get().getName() + "], Preferred upload method is [" + this.preferredUploadMethod + "].");
+ LOGGER.info("GPU Vendor [" + vendor + "] with OS [" + EPlatform.get().getName() + "], Preferred upload method is [" + this.preferredUploadMethod + "].");
@@ -200,7 +199,7 @@ public class GLProxy
//==========//
// GLProxy creation success
- GL_LOGGER.info(GLProxy.class.getSimpleName() + " creation successful. OpenGL smiles upon you this day.");
+ LOGGER.info(GLProxy.class.getSimpleName() + " creation successful. OpenGL smiles upon you this day.");
}
@@ -244,14 +243,13 @@ public class GLProxy
{
try
{
- // ...run the actual code...
renderCall.run();
}
catch (Exception e)
{
- RuntimeException error = new RuntimeException("Uncaught Exception during execution:", e);
+ RuntimeException error = new RuntimeException("Uncaught Exception during GL call execution:", e);
error.setStackTrace(stackTrace);
- GL_LOGGER.error(Thread.currentThread().getName() + " ran into a issue: ", error);
+ LOGGER.error("[" + Thread.currentThread().getName() + "] ran into an unexpected error running a GL call, Error: ["+ e.getMessage() +"].", error);
}
}
@@ -314,7 +312,7 @@ public class GLProxy
{
// critical error
- GL_LOGGER.error(exception.getMessage(), exception);
+ LOGGER.error(exception.getMessage(), exception);
if (errorHandlingMode == EDhApiGLErrorHandlingMode.LOG_THROW)
{
@@ -337,16 +335,16 @@ public class GLProxy
switch (severity)
{
case HIGH:
- GL_LOGGER.error(exception.getMessage(), exception);
+ LOGGER.error(exception.getMessage(), exception);
break;
case MEDIUM:
- GL_LOGGER.warn(exception.getMessage(), exception);
+ LOGGER.warn(exception.getMessage(), exception);
break;
case LOW:
- GL_LOGGER.info(exception.getMessage(), exception);
+ LOGGER.info(exception.getMessage(), exception);
break;
case NOTIFICATION:
- GL_LOGGER.debug(exception.getMessage(), exception);
+ LOGGER.debug(exception.getMessage(), exception);
break;
}
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/GLBuffer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/GLBuffer.java
index b67150c66..d45d61bae 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/GLBuffer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/GLBuffer.java
@@ -22,29 +22,30 @@ package com.seibel.distanthorizons.core.render.glObject.buffer;
import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.core.util.ThreadUtil;
import com.seibel.distanthorizons.core.util.math.UnitBytes;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftGLWrapper;
-import org.apache.logging.log4j.Logger;
import org.lwjgl.opengl.GL32;
import org.lwjgl.opengl.GL44;
-import java.lang.invoke.MethodHandles;
import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.nio.ByteBuffer;
-import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicInteger;
public class GLBuffer implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererGLEventToFile)
+ .chatLevelConfig(Config.Common.Logging.logRendererGLEventToChat)
+ .build();
private static final IMinecraftGLWrapper GLMC = SingletonInjector.INSTANCE.get(IMinecraftGLWrapper.class);
@@ -186,7 +187,7 @@ public class GLBuffer implements AutoCloseable
{
LodUtil.assertNotReach("maxExpansionSize is [" + maxExpansionSize + "] but buffer size is [" + bbSize + "]!");
}
- GLProxy.GL_LOGGER.debug("Uploading buffer with ["+new UnitBytes(bbSize)+"].");
+ GLProxy.LOGGER.debug("Uploading buffer with ["+new UnitBytes(bbSize)+"].");
// Don't upload an empty buffer
if (bbSize == 0)
@@ -385,7 +386,7 @@ public class GLBuffer implements AutoCloseable
}
catch (Exception e)
{
- LOGGER.error("Unexpected error in cleanup thread: " + e.getMessage(), e);
+ LOGGER.error("Unexpected error in cleanup thread: [" + e.getMessage() + "].", e);
}
}
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java
index 33636a612..f669629af 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/buffer/QuadElementBuffer.java
@@ -20,10 +20,11 @@
package com.seibel.distanthorizons.core.render.glObject.buffer;
import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLEnums;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.opengl.GL32;
import org.lwjgl.system.MemoryUtil;
@@ -33,7 +34,7 @@ import java.nio.ByteOrder;
public class QuadElementBuffer extends GLElementBuffer
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger(MethodHandles.lookup().lookupClass().getSimpleName());
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public QuadElementBuffer()
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/shader/Shader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/shader/Shader.java
index 5d3f0f2c2..30cd2b54c 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/shader/Shader.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/shader/Shader.java
@@ -27,6 +27,9 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.ByteBuffer;
+import com.seibel.distanthorizons.core.config.Config;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
import org.lwjgl.PointerBuffer;
import org.lwjgl.opengl.GL32;
@@ -41,6 +44,12 @@ import org.lwjgl.system.NativeType;
*/
public class Shader
{
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererGLEventToFile)
+ .chatLevelConfig(Config.Common.Logging.logRendererGLEventToChat)
+ .build();
+
+
/** OpenGL shader ID */
public final int id;
@@ -60,7 +69,7 @@ public class Shader
*/
public Shader(int type, String path, boolean absoluteFilePath)
{
- GLProxy.GL_LOGGER.info("Loading shader at [" + path + "]");
+ LOGGER.info("Loading shader at [" + path + "]");
// Create an empty shader object
this.id = GL32.glCreateShader(type);
if (this.id == 0)
@@ -80,13 +89,13 @@ public class Shader
this.free(); // important!
throw new RuntimeException(message);
}
- GLProxy.GL_LOGGER.info("Shader at " + path + " loaded successfully.");
+ LOGGER.info("Shader at " + path + " loaded successfully.");
}
public Shader(int type, String sourceString)
{
- GLProxy.GL_LOGGER.info("Loading shader with type: ["+type+"]");
- GLProxy.GL_LOGGER.debug("Source: \n["+sourceString+"]");
+ LOGGER.info("Loading shader with type: ["+type+"]");
+ LOGGER.debug("Source: \n["+sourceString+"]");
if (sourceString == null || sourceString.isEmpty())
{
throw new IllegalArgumentException("No shader source given.");
@@ -111,7 +120,7 @@ public class Shader
this.free(); // important!
throw new RuntimeException(message);
}
- GLProxy.GL_LOGGER.info("Shader loaded sucessfully.");
+ LOGGER.info("Shader loaded sucessfully.");
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePostGL43.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePostGL43.java
index 06c35c97f..658227d6b 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePostGL43.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePostGL43.java
@@ -19,6 +19,9 @@
package com.seibel.distanthorizons.core.render.glObject.vertexAttribute;
+import com.seibel.distanthorizons.core.config.Config;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
import org.lwjgl.opengl.GL43;
@@ -33,6 +36,12 @@ import org.lwjgl.opengl.GL43;
*/
public final class VertexAttributePostGL43 extends AbstractVertexAttribute
{
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererGLEventToFile)
+ .chatLevelConfig(Config.Common.Logging.logRendererGLEventToChat)
+ .build();
+
+
int numberOfBindingPoints = 0;
int strideSize = 0;
@@ -135,12 +144,12 @@ public final class VertexAttributePostGL43 extends AbstractVertexAttribute
{
if (this.strideSize != expectedStrideSize)
{
- GLProxy.GL_LOGGER.error("Vertex Attribute calculated stride size " + this.strideSize +
+ LOGGER.error("Vertex Attribute calculated stride size " + this.strideSize +
" does not match the provided expected stride size " + expectedStrideSize + "!");
throw new IllegalArgumentException("Vertex Attribute Incorrect Format");
}
- GLProxy.GL_LOGGER.info("Vertex Attribute (GL43+) completed. It contains " + this.numberOfBindingPoints
+ LOGGER.info("Vertex Attribute (GL43+) completed. It contains " + this.numberOfBindingPoints
+ " binding points and a stride size of " + this.strideSize);
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePreGL43.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePreGL43.java
index d8bb2b622..ac0bec5c5 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePreGL43.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/vertexAttribute/VertexAttributePreGL43.java
@@ -24,12 +24,21 @@ import java.util.Iterator;
import java.util.TreeMap;
import java.util.TreeSet;
+import com.seibel.distanthorizons.core.config.Config;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
import org.lwjgl.opengl.GL32;
public final class VertexAttributePreGL43 extends AbstractVertexAttribute
{
+ private static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererGLEventToFile)
+ .chatLevelConfig(Config.Common.Logging.logRendererGLEventToChat)
+ .build();
+
+
// I tried to use raw arrays as much as possible since those lookups
// happen every frame, and the speed directly affects fps
int strideSize = 0;
@@ -207,7 +216,7 @@ public final class VertexAttributePreGL43 extends AbstractVertexAttribute
VertexPointer pointer = this.pointers[i];
if (pointer == null)
{
- GLProxy.GL_LOGGER.warn("Vertex Attribute index " + i + " is not set! No index should be skipped normally!");
+ LOGGER.warn("Vertex Attribute index " + i + " is not set! No index should be skipped normally!");
continue;
}
this.pointersOffset[i] = currentOffset;
@@ -216,26 +225,26 @@ public final class VertexAttributePreGL43 extends AbstractVertexAttribute
if (currentOffset != expectedStrideSize)
{
- GLProxy.GL_LOGGER.error("Vertex Attribute calculated stride size " + currentOffset +
+ LOGGER.error("Vertex Attribute calculated stride size " + currentOffset +
" does not match the provided expected stride size " + expectedStrideSize + "!");
throw new IllegalArgumentException("Vertex Attribute Incorrect Format");
}
this.strideSize = currentOffset;
- GLProxy.GL_LOGGER.info("Vertex Attribute (pre GL43) completed.");
+ LOGGER.info("Vertex Attribute (pre GL43) completed.");
// Debug logging
- GLProxy.GL_LOGGER.debug("AttributeIndex: ElementCount, glType, normalized, strideSize, offset");
+ LOGGER.debug("AttributeIndex: ElementCount, glType, normalized, strideSize, offset");
for (int i = 0; i < this.pointers.length; i++)
{
VertexPointer pointer = this.pointers[i];
if (pointer == null)
{
- GLProxy.GL_LOGGER.debug(i + ": Null!!!!");
+ LOGGER.debug(i + ": Null!!!!");
}
else
{
- GLProxy.GL_LOGGER.debug(i + ": " + pointer.elementCount + ", " +
+ LOGGER.debug(i + ": " + pointer.elementCount + ", " +
pointer.glType + ", " + pointer.normalized + ", " + this.strideSize + ", " + this.pointersOffset[i]);
}
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java
index bdbeb4b78..4fe8fbde3 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java
@@ -20,12 +20,11 @@
package com.seibel.distanthorizons.core.render.renderer;
import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
-import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerMode;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.config.types.ConfigEntry;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
-import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos2D;
import com.seibel.distanthorizons.core.pos.DhLodPos;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
@@ -59,8 +58,10 @@ public class DebugRenderer
{
public static DebugRenderer INSTANCE = new DebugRenderer();
- public static final ConfigBasedLogger LOGGER = new ConfigBasedLogger(LogManager.getLogger(DebugRenderer.class), () -> EDhApiLoggerMode.LOG_ALL_TO_CHAT);
- public static final ConfigBasedSpamLogger SPAM_LOGGER = new ConfigBasedSpamLogger(LogManager.getLogger(DebugRenderer.class), () -> EDhApiLoggerMode.LOG_ALL_TO_CHAT, 1);
+ public static final DhLogger LOGGER = new DhLoggerBuilder().build();
+ public static final DhLogger RATE_LIMITED_LOGGER = new DhLoggerBuilder()
+ .maxCountPerSecond(1)
+ .build();
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
private static final IMinecraftGLWrapper GLMC = SingletonInjector.INSTANCE.get(IMinecraftGLWrapper.class);
@@ -504,7 +505,7 @@ public class DebugRenderer
}
catch (Exception e)
{
- SPAM_LOGGER.error("Unexpected Debug renderer error, Error: "+e.getMessage(), e);
+ RATE_LIMITED_LOGGER.error("Unexpected Debug renderer error, Error: "+e.getMessage(), e);
}
}
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/FadeRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/FadeRenderer.java
index 48518f93e..121c61b48 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/FadeRenderer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/FadeRenderer.java
@@ -20,6 +20,7 @@
package com.seibel.distanthorizons.core.render.renderer;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLState;
import com.seibel.distanthorizons.core.render.renderer.shaders.FadeApplyShader;
import com.seibel.distanthorizons.core.render.renderer.shaders.FadeShader;
@@ -30,7 +31,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRen
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.opengl.GL32;
import java.nio.ByteBuffer;
@@ -45,7 +46,7 @@ public class FadeRenderer
{
public static FadeRenderer INSTANCE = new FadeRenderer();
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
index 76ff1a5d1..be97bddf2 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java
@@ -26,10 +26,9 @@ import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhAp
import com.seibel.distanthorizons.api.methods.events.sharedParameterObjects.DhApiTextureCreatedParam;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dataObjects.render.bufferBuilding.ColumnRenderBuffer;
-import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
-import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos;
import com.seibel.distanthorizons.core.render.DhApiRenderProxy;
import com.seibel.distanthorizons.core.render.RenderBufferHandler;
@@ -40,24 +39,18 @@ import com.seibel.distanthorizons.core.render.glObject.texture.*;
import com.seibel.distanthorizons.core.render.renderer.generic.GenericObjectRenderer;
import com.seibel.distanthorizons.core.render.renderer.shaders.*;
import com.seibel.distanthorizons.core.util.math.Mat4f;
-import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftGLWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IProfilerWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.misc.ILightMapWrapper;
-import com.seibel.distanthorizons.api.enums.rendering.EDhApiFogColorMode;
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.AbstractOptifineAccessor;
-import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.IIrisAccessor;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapper;
import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
import com.seibel.distanthorizons.coreapi.DependencyInjection.OverrideInjector;
import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.util.math.Vec3f;
-import org.apache.logging.log4j.LogManager;
import org.lwjgl.opengl.GL32;
-import java.awt.*;
-import java.time.Duration;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
@@ -67,14 +60,15 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class LodRenderer
{
- public static final ConfigBasedLogger EVENT_LOGGER = new ConfigBasedLogger(LogManager.getLogger(LodRenderer.class),
- () -> Config.Common.Logging.logRendererBufferEvent.get());
- public static final ConfigBasedSpamLogger SPAM_LOGGER = new ConfigBasedSpamLogger(LogManager.getLogger(LodRenderer.class),
- () -> Config.Common.Logging.logRendererBufferEvent.get(), 1);
+ public static final DhLogger LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererEventToFile)
+ .build();
- private static final IIrisAccessor IRIS_ACCESSOR = ModAccessorInjector.INSTANCE.get(IIrisAccessor.class);
+ public static final DhLogger RATE_LIMITED_LOGGER = new DhLoggerBuilder()
+ .fileLevelConfig(Config.Common.Logging.logRendererEventToFile)
+ .maxCountPerSecond(4)
+ .build();
- private static final IMinecraftClientWrapper MC = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
private static final IMinecraftGLWrapper GLMC = SingletonInjector.INSTANCE.get(IMinecraftGLWrapper.class);
@@ -136,7 +130,7 @@ public class LodRenderer
{
if (this.rendererClosed)
{
- EVENT_LOGGER.warn("close() called twice!");
+ LOGGER.warn("close() called twice!");
return;
}
@@ -147,12 +141,12 @@ public class LodRenderer
renderLock.lock();
try
{
- EVENT_LOGGER.info("Shutting down " + LodRenderer.class.getSimpleName() + "...");
+ LOGGER.info("Shutting down " + LodRenderer.class.getSimpleName() + "...");
this.cleanup();
this.bufferHandler.close();
- EVENT_LOGGER.info("Finished shutting down " + LodRenderer.class.getSimpleName());
+ LOGGER.info("Finished shutting down " + LodRenderer.class.getSimpleName());
}
finally
{
@@ -218,7 +212,7 @@ public class LodRenderer
if (this.rendererClosed)
{
- EVENT_LOGGER.error("LOD rendering attempted after the renderer has been shut down!");
+ RATE_LIMITED_LOGGER.error("LOD rendering attempted after the renderer has been shut down!");
return;
}
@@ -428,7 +422,6 @@ public class LodRenderer
// end of internal LOD profiling
profiler.pop();
- SPAM_LOGGER.incLogTries();
}
finally
@@ -479,9 +472,9 @@ public class LodRenderer
// this is a fairly slow call and enabling it will reduce FPS significantly
if (!GL32.glIsBuffer(vbo.getId()))
{
- if (SPAM_LOGGER.canMaybeLog())
+ if (RATE_LIMITED_LOGGER.canLog()) // can log check to prevent creating a bunch of strings unnecessarily
{
- SPAM_LOGGER.warn("Attempted to draw invalid buffer: [" + vbo.getId() + "], expected size: ["+vbo.getSize()+"], upload complete: [" + parentBufferContainer.buffersUploaded + "], upload in progress: [" + parentBufferContainer.uploadInProgress() + "], buffer blockPos: ["+parentBufferContainer.blockPos+"].");
+ RATE_LIMITED_LOGGER.warn("Attempted to draw invalid buffer: [" + vbo.getId() + "], expected size: ["+vbo.getSize()+"], upload complete: [" + parentBufferContainer.buffersUploaded + "], upload in progress: [" + parentBufferContainer.uploadInProgress() + "], buffer blockPos: ["+parentBufferContainer.blockPos+"].");
}
return;
}
@@ -635,13 +628,13 @@ public class LodRenderer
{
if (this.isSetupComplete)
{
- EVENT_LOGGER.warn("Renderer setup called but it has already completed setup!");
+ LOGGER.warn("Renderer setup called but it has already completed setup!");
return;
}
if (!GLProxy.hasInstance())
{
// shouldn't normally happen, but just in case
- EVENT_LOGGER.warn("Renderer setup called but GLProxy has not yet been setup!");
+ LOGGER.warn("Renderer setup called but GLProxy has not yet been setup!");
return;
}
@@ -650,7 +643,7 @@ public class LodRenderer
this.setupLock.lock();
- EVENT_LOGGER.info("Setting up renderer");
+ LOGGER.info("Setting up renderer");
this.lodRenderProgram = new DhTerrainShaderProgram();
this.quadIBO = new QuadElementBuffer();
@@ -678,13 +671,13 @@ public class LodRenderer
if(this.framebuffer.getStatus() != GL32.GL_FRAMEBUFFER_COMPLETE)
{
// This generally means something wasn't bound, IE missing either the color or depth texture
- EVENT_LOGGER.warn("FrameBuffer ["+this.framebuffer.getId()+"] isn't complete.");
+ LOGGER.warn("FrameBuffer ["+this.framebuffer.getId()+"] isn't complete.");
return;
}
this.isSetupComplete = true;
- EVENT_LOGGER.info("Renderer setup complete");
+ LOGGER.info("Renderer setup complete");
}
finally
{
@@ -777,7 +770,7 @@ public class LodRenderer
if (!GLProxy.hasInstance())
{
// shouldn't normally happen, but just in case
- EVENT_LOGGER.warn("Renderer Cleanup called but the GLProxy has never been initialized!");
+ LOGGER.warn("Renderer Cleanup called but the GLProxy has never been initialized!");
return;
}
@@ -785,10 +778,10 @@ public class LodRenderer
{
this.setupLock.lock();
- EVENT_LOGGER.info("Queuing Renderer Cleanup for main render thread");
+ LOGGER.info("Queuing Renderer Cleanup for main render thread");
GLProxy.getInstance().queueRunningOnRenderThread(() ->
{
- EVENT_LOGGER.info("Renderer Cleanup Started");
+ LOGGER.info("Renderer Cleanup Started");
if (this.lodRenderProgram != null)
{
@@ -811,7 +804,7 @@ public class LodRenderer
activeColorTextureId = -1;
activeDepthTextureId = -1;
- EVENT_LOGGER.info("Renderer Cleanup Complete");
+ LOGGER.info("Renderer Cleanup Complete");
});
}
catch (Exception e)
@@ -822,34 +815,4 @@ public class LodRenderer
- //================//
- // helper classes //
- //================//
-
- // TODO move
- public static class LagSpikeCatcher
- {
- long timer = System.nanoTime();
-
- public LagSpikeCatcher() { }
-
- public void end(String source)
- {
- if (!ENABLE_DRAW_LAG_SPIKE_LOGGING)
- {
- return;
- }
-
- this.timer = System.nanoTime() - this.timer;
- if (this.timer > DRAW_LAG_SPIKE_THRESHOLD_NS)
- {
- //4 ms
- EVENT_LOGGER.debug("NOTE: " + source + " took " + Duration.ofNanos(this.timer) + "!");
- }
-
- }
-
- }
-
-
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java
index 7cd03b3ca..ae46b606d 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java
@@ -20,10 +20,9 @@
package com.seibel.distanthorizons.core.render.renderer;
import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
-import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerMode;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
-import com.seibel.distanthorizons.core.logging.ConfigBasedLogger;
-import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer;
import com.seibel.distanthorizons.core.render.glObject.shader.ShaderProgram;
import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.AbstractVertexAttribute;
@@ -31,7 +30,6 @@ import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.VertexPoi
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftGLWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
-import org.apache.logging.log4j.LogManager;
import org.lwjgl.opengl.GL32;
import java.nio.ByteBuffer;
@@ -40,10 +38,7 @@ import java.nio.ByteOrder;
public class TestRenderer
{
- public static final ConfigBasedLogger logger = new ConfigBasedLogger(
- LogManager.getLogger(TestRenderer.class), () -> EDhApiLoggerMode.LOG_ALL_TO_CHAT);
- public static final ConfigBasedSpamLogger spamLogger = new ConfigBasedSpamLogger(
- LogManager.getLogger(TestRenderer.class), () -> EDhApiLoggerMode.LOG_ALL_TO_CHAT, 1);
+ public static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
private static final IMinecraftGLWrapper GLMC = SingletonInjector.INSTANCE.get(IMinecraftGLWrapper.class);
@@ -67,7 +62,7 @@ public class TestRenderer
return;
}
- logger.info("init");
+ LOGGER.info("init");
this.init = true;
this.va = AbstractVertexAttribute.create();
this.va.bind();
@@ -106,7 +101,7 @@ public class TestRenderer
public void render()
{
- // TODO fix for MC 1.21.5
+ // TODO fix for MC 1.21.5+
this.init();
GLMC.glBindFramebuffer(GL32.GL_FRAMEBUFFER, MC_RENDER.getTargetFrameBuffer());
@@ -127,8 +122,6 @@ public class TestRenderer
// Render the square
GL32.glDrawArrays(GL32.GL_TRIANGLE_FAN, 0, 4);
GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT);
-
- spamLogger.incLogTries();
}
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/BeaconRenderHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/BeaconRenderHandler.java
index 3d14eea0f..e63de2ec8 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/BeaconRenderHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/BeaconRenderHandler.java
@@ -36,7 +36,7 @@ import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@@ -48,7 +48,7 @@ import java.util.function.Predicate;
public class BeaconRenderHandler
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
/** how often should we check if a beacon should be culled? */
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/CloudRenderHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/CloudRenderHandler.java
index 5bf3a940b..c9a2eccf8 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/CloudRenderHandler.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/CloudRenderHandler.java
@@ -34,7 +34,7 @@ import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.util.math.Vec3f;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import javax.imageio.ImageIO;
import java.awt.*;
@@ -46,7 +46,7 @@ import java.util.*;
public class CloudRenderHandler
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
private static final String CLOUD_RESOURCE_TEXTURE_PATH = "assets/distanthorizons/textures/clouds.png";
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java
index 601199eec..bd0d948ee 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericObjectRenderer.java
@@ -20,7 +20,6 @@
package com.seibel.distanthorizons.core.render.renderer.generic;
import com.seibel.distanthorizons.api.enums.config.EDhApiGpuUploadMethod;
-import com.seibel.distanthorizons.api.enums.config.EDhApiLoggerMode;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiBlockMaterial;
import com.seibel.distanthorizons.api.interfaces.override.rendering.IDhApiGenericObjectShaderProgram;
import com.seibel.distanthorizons.api.interfaces.render.IDhApiRenderableBoxGroup;
@@ -34,7 +33,7 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.dependencyInjection.ModAccessorInjector;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.jar.EPlatform;
-import com.seibel.distanthorizons.core.logging.ConfigBasedSpamLogger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
import com.seibel.distanthorizons.core.render.glObject.GLProxy;
@@ -50,7 +49,7 @@ import com.seibel.distanthorizons.coreapi.DependencyInjection.ApiEventInjector;
import com.seibel.distanthorizons.coreapi.DependencyInjection.OverrideInjector;
import com.seibel.distanthorizons.coreapi.ModInfo;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.opengl.ARBInstancedArrays;
import org.lwjgl.opengl.GL32;
import org.lwjgl.opengl.GL33;
@@ -69,8 +68,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class GenericObjectRenderer implements IDhApiCustomRenderRegister
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
- public static final ConfigBasedSpamLogger SPAM_LOGGER = new ConfigBasedSpamLogger(LogManager.getLogger(GenericObjectRenderer.class), () -> EDhApiLoggerMode.LOG_ALL_TO_CHAT, 1);
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
private static final ISodiumAccessor SODIUM = ModAccessorInjector.INSTANCE.get(ISodiumAccessor.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericRenderObjectFactory.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericRenderObjectFactory.java
index 481eba7d8..57d568880 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericRenderObjectFactory.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/GenericRenderObjectFactory.java
@@ -28,7 +28,7 @@ import com.seibel.distanthorizons.api.objects.render.DhApiRenderableBox;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.math.Vec3d;
import com.seibel.distanthorizons.core.util.math.Vec3f;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.List;
import java.util.*;
@@ -41,7 +41,7 @@ import java.util.*;
*/
public class GenericRenderObjectFactory implements IDhApiCustomRenderObjectFactory
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final GenericRenderObjectFactory INSTANCE = new GenericRenderObjectFactory();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/RenderBoxArrayCache.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/RenderBoxArrayCache.java
index e729d76b6..027585c7d 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/RenderBoxArrayCache.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/generic/RenderBoxArrayCache.java
@@ -3,7 +3,7 @@ package com.seibel.distanthorizons.core.render.renderer.generic;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.RemovalNotification;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.concurrent.ConcurrentMap;
@@ -12,7 +12,7 @@ import java.util.concurrent.ConcurrentMap;
*/
public class RenderBoxArrayCache
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final int ARRAY_LENGTH_WIDTH = 24;
public static final int ARRAY_ID_WIDTH = 8;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DhApplyShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DhApplyShader.java
index da3bd509c..c5a1958c0 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DhApplyShader.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DhApplyShader.java
@@ -20,13 +20,14 @@
package com.seibel.distanthorizons.core.render.renderer.shaders;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.render.glObject.GLState;
import com.seibel.distanthorizons.core.render.glObject.shader.ShaderProgram;
import com.seibel.distanthorizons.core.render.renderer.LodRenderer;
import com.seibel.distanthorizons.core.render.renderer.ScreenQuad;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftGLWrapper;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.lwjgl.opengl.GL32;
import java.nio.ByteBuffer;
@@ -38,7 +39,7 @@ public class DhApplyShader extends AbstractShaderRenderer
{
public static DhApplyShader INSTANCE = new DhApplyShader();
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftGLWrapper GLMC = SingletonInjector.INSTANCE.get(IMinecraftGLWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java
index 3d3ef4f67..b7ca70738 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java
@@ -22,7 +22,7 @@ package com.seibel.distanthorizons.core.sql;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.sql.dto.IBaseDTO;
import com.seibel.distanthorizons.core.sql.repo.AbstractDhRepo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.IOException;
import java.io.InputStream;
@@ -34,7 +34,7 @@ import java.util.Scanner;
/** Handles both initial setup and updating of the sql databases. */
public class DatabaseUpdater
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final String SCHEMA_TABLE_NAME = "Schema";
/** Since java can only run one sql query at a time this string is used to split up our scripts into individual queries. */
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java
index 7d1def75f..9e68e8c02 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/AbstractDhRepo.java
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.sql.repo;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.sql.DatabaseUpdater;
import com.seibel.distanthorizons.core.sql.DbConnectionClosedException;
@@ -26,7 +27,7 @@ import com.seibel.distanthorizons.core.sql.dto.IBaseDTO;
import com.seibel.distanthorizons.core.sql.repo.phantoms.AutoClosableTrackingWrapper;
import com.seibel.distanthorizons.core.util.KeyedLockContainer;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@@ -44,7 +45,7 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public abstract class AbstractDhRepo> implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final String DEFAULT_DATABASE_TYPE = "jdbc:sqlite";
/** a value of 0 means there's no timeout */
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/BeaconBeamRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/BeaconBeamRepo.java
index f9370f0aa..4f0ed48ed 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/BeaconBeamRepo.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/BeaconBeamRepo.java
@@ -19,13 +19,14 @@
package com.seibel.distanthorizons.core.sql.repo;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos;
import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.sql.dto.BeaconBeamDTO;
import com.seibel.distanthorizons.core.util.LodUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.awt.*;
@@ -38,7 +39,7 @@ import java.util.List;
public class BeaconBeamRepo extends AbstractDhRepo
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/ChunkHashRepo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/ChunkHashRepo.java
index ed314e7d6..5ae49fa98 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/ChunkHashRepo.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/ChunkHashRepo.java
@@ -22,7 +22,7 @@ package com.seibel.distanthorizons.core.sql.repo;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.sql.dto.ChunkHashDTO;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.io.File;
@@ -32,7 +32,7 @@ import java.sql.SQLException;
public class ChunkHashRepo extends AbstractDhRepo
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java
index d1cbb7145..6d9f47c5d 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/FullDataSourceV2Repo.java
@@ -21,6 +21,7 @@ package com.seibel.distanthorizons.core.sql.repo;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
import com.seibel.distanthorizons.core.dataObjects.fullData.sources.FullDataSourceV2;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.sql.DbConnectionClosedException;
@@ -30,7 +31,7 @@ import com.seibel.distanthorizons.core.util.ListUtil;
import com.seibel.distanthorizons.core.util.objects.dataStreams.DhDataInputStream;
import it.unimi.dsi.fastutil.bytes.ByteArrayList;
import it.unimi.dsi.fastutil.longs.LongArrayList;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.io.*;
@@ -42,7 +43,7 @@ import java.util.Map;
public class FullDataSourceV2Repo extends AbstractDhRepo
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/phantoms/AutoClosableTrackingWrapper.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/phantoms/AutoClosableTrackingWrapper.java
index 8eabab51a..71892d1ff 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/phantoms/AutoClosableTrackingWrapper.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/repo/phantoms/AutoClosableTrackingWrapper.java
@@ -18,7 +18,7 @@ import java.util.Set;
*/
public class AutoClosableTrackingWrapper implements InvocationHandler
{
- //private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ //private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* should be enabled during development to
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/AnnotationUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/AnnotationUtil.java
index 24df27df1..cfadc7e19 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/AnnotationUtil.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/AnnotationUtil.java
@@ -19,14 +19,15 @@
package com.seibel.distanthorizons.core.util;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.lang.reflect.Field;
public class AnnotationUtil
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** A quick method to test if an enum value has specific runtime annotation. */
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/FileUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/FileUtil.java
index 0ec5738e4..1e004509e 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/FileUtil.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/FileUtil.java
@@ -20,7 +20,7 @@
package com.seibel.distanthorizons.core.util;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.File;
import java.io.IOException;
@@ -30,7 +30,7 @@ import java.nio.file.Paths;
public class FileUtil
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* Renames the given file to FILE_NAME.ORIGINAL_PREFIX.corrupted.
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/LodUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/LodUtil.java
index d19e76936..cf2ee52b7 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/LodUtil.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/LodUtil.java
@@ -36,16 +36,14 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRen
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.IDimensionTypeWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
/**
* This class holds methods and constants that may be used in multiple places.
*/
public class LodUtil
{
- private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
- private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class);
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
@@ -149,45 +147,31 @@ public class LodUtil
}
- // True if the requested threshold pass, or false otherwise
- // For details, see:
- // https://stackoverflow.com/questions/3571203/what-are-runtime-getruntime-totalmemory-and-freememory
+ /**
+ * Returns true if the requested threshold passes, false otherwise.
+ * For details, see:
+ * https://stackoverflow.com/questions/3571203/what-are-runtime-getruntime-totalmemory-and-freememory
+ */
public static boolean checkRamUsage(double minFreeMemoryPercent, int minFreeMemoryMB)
{
long freeMem = Runtime.getRuntime().freeMemory() + Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory();
if (freeMem < minFreeMemoryMB * 1024L * 1024L) return false;
+
long maxMem = Runtime.getRuntime().maxMemory();
if (freeMem / (double) maxMem < minFreeMemoryPercent) return false;
+
return true;
}
- /**
- * Format a given string with params using log4j's MessageFormat
- *
- * @param str The string to format
- * @param param The parameters to use in the string
- * @return A message object. Call .toString() to get the string.
- * @apiNote This 'format' SHOULD ONLY be used for logging and debugging purposes!
- * Do not use it for deserialization or naming of objects.
- * @author leetom
- */
- public static String formatLog(String str, Object... param) { return LOGGER.getMessageFactory().newMessage(str, param).getFormattedMessage(); }
-
public static class AssertFailureException extends RuntimeException
{
public AssertFailureException(String message)
{
super(message);
- debugBreak();
}
}
- public static void debugBreak()
- {
- int a = 0; // Set breakpoint here for auto pause on assert failure
- }
-
public static void assertTrue(boolean condition)
{
if (!condition)
@@ -202,29 +186,10 @@ public class LodUtil
throw new AssertFailureException("Assertion failed:\n " + message);
}
}
- public static void assertTrue(boolean condition, String message, Object... args)
- {
- if (!condition)
- {
- throw new AssertFailureException("Assertion failed:\n " + formatLog(message, args));
- }
- }
- public static void assertNotReach()
- {
- throw new AssertFailureException("Assert Not Reach failed");
- }
public static void assertNotReach(String message)
{
throw new AssertFailureException("Assert Not Reach failed:\n " + message);
}
- public static void assertNotReach(String message, Object... args)
- {
- throw new AssertFailureException("Assert Not Reach failed:\n " + formatLog(message, args));
- }
- public static void assertToDo()
- {
- throw new AssertFailureException("TODO!");
- }
public static Throwable ensureUnwrap(Throwable t)
{
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/ReflectionUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/ReflectionUtil.java
index 819075e56..adefb654b 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/ReflectionUtil.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/ReflectionUtil.java
@@ -21,7 +21,7 @@ package com.seibel.distanthorizons.core.util;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.modAccessor.AbstractOptifineAccessor;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Field;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/RenderDataPointUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/RenderDataPointUtil.java
index 356736120..59504ed39 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/RenderDataPointUtil.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/RenderDataPointUtil.java
@@ -21,12 +21,11 @@ package com.seibel.distanthorizons.core.util;
import com.seibel.distanthorizons.api.enums.rendering.EDhApiBlockMaterial;
import com.seibel.distanthorizons.core.level.AbstractDhLevel;
-import com.seibel.distanthorizons.core.logging.SpamReducedLogger;
import com.seibel.distanthorizons.core.dataObjects.render.columnViews.ColumnArrayView;
import com.seibel.distanthorizons.core.dataObjects.render.columnViews.IColumnDataView;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
/**
@@ -69,7 +68,7 @@ public class RenderDataPointUtil
public static final boolean RUN_VALIDATION = ModInfo.IS_DEV_BUILD;
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final static int EMPTY_DATA = 0;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/ThreadUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/ThreadUtil.java
index 5067c7058..fce227877 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/ThreadUtil.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/ThreadUtil.java
@@ -19,11 +19,12 @@
package com.seibel.distanthorizons.core.util;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.threading.DhThreadFactory;
import com.seibel.distanthorizons.core.util.threading.ThreadPoolUtil;
import com.seibel.distanthorizons.coreapi.ModInfo;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.concurrent.*;
@@ -35,7 +36,7 @@ import java.util.concurrent.*;
*/
public class ThreadUtil
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static final String THREAD_NAME_PREFIX = ModInfo.THREAD_NAME_PREFIX;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/EventLoop.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/EventLoop.java
index bd701d63f..97054c975 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/EventLoop.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/EventLoop.java
@@ -21,7 +21,7 @@ package com.seibel.distanthorizons.core.util.objects;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.coreapi.ModInfo;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
@@ -29,7 +29,7 @@ import java.util.concurrent.ExecutorService;
public class EventLoop implements AutoCloseable
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private final boolean PAUSE_ON_ERROR = ModInfo.IS_DEV_BUILD;
private final ExecutorService executorService;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/GLMessages/GLMessageBuilder.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/GLMessages/GLMessageBuilder.java
index 8c775a818..106b81a61 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/GLMessages/GLMessageBuilder.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/GLMessages/GLMessageBuilder.java
@@ -20,7 +20,7 @@
package com.seibel.distanthorizons.core.util.objects.GLMessages;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -28,7 +28,7 @@ import java.util.function.Function;
/** Expected message formats can be found in GLMessageTest. */
public class GLMessageBuilder
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** how many stages are present in the message parser */
private static final int FINAL_LEGACY_PARSER_STAGE_INDEX = 15;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java
index 8d83c33d0..50941d101 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataInputStream.java
@@ -22,9 +22,10 @@ package com.seibel.distanthorizons.core.util.objects.dataStreams;
import com.github.luben.zstd.RecyclingBufferPool;
import com.github.luben.zstd.ZstdInputStream;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import net.jpountz.lz4.LZ4FrameInputStream;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.tukaani.xz.ResettableArrayCache;
import org.tukaani.xz.XZInputStream;
@@ -44,7 +45,7 @@ public class DhDataInputStream extends DataInputStream
{
private static final ThreadLocal LZMA_RESETTABLE_ARRAY_CACHE_GETTER = ThreadLocal.withInitial(() -> new ResettableArrayCache(new LzmaArrayCache()));
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public DhDataInputStream(InputStream stream, EDhApiDataCompressionMode compressionMode) throws IOException
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java
index 0d7d87d57..ed8ae8140 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/DhDataOutputStream.java
@@ -21,11 +21,12 @@ package com.seibel.distanthorizons.core.util.objects.dataStreams;
import com.github.luben.zstd.ZstdOutputStream;
import com.seibel.distanthorizons.api.enums.config.EDhApiDataCompressionMode;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import net.jpountz.lz4.LZ4Factory;
import net.jpountz.lz4.LZ4FrameOutputStream;
import net.jpountz.xxhash.XXHashFactory;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.tukaani.xz.*;
import java.io.*;
@@ -37,7 +38,7 @@ import java.io.*;
*/
public class DhDataOutputStream extends DataOutputStream
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final ThreadLocal LZMA_RESETTABLE_ARRAY_CACHE_GETTER = ThreadLocal.withInitial(() -> new ResettableArrayCache(new LzmaArrayCache()));
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/LzmaArrayCache.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/LzmaArrayCache.java
index 269ec7e39..de1523eac 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/LzmaArrayCache.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/LzmaArrayCache.java
@@ -2,7 +2,7 @@ package com.seibel.distanthorizons.core.util.objects.dataStreams;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import it.unimi.dsi.fastutil.ints.Int2ReferenceArrayMap;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.tukaani.xz.ArrayCache;
import java.util.ArrayList;
@@ -18,7 +18,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/
public class LzmaArrayCache extends ArrayCache
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* In James' testing the byte and int caches only ever had to store 2 and 4 arrays respectively.
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/ZstdArrayCache.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/ZstdArrayCache.java
index 1d387e05f..cfce9c7c6 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/ZstdArrayCache.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/dataStreams/ZstdArrayCache.java
@@ -3,7 +3,7 @@ package com.seibel.distanthorizons.core.util.objects.dataStreams;
//import com.github.luben.zstd.BufferPool;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import it.unimi.dsi.fastutil.ints.Int2ReferenceArrayMap;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -16,7 +16,7 @@ import java.util.function.IntUnaryOperator;
*/
public class ZstdArrayCache //implements BufferPool
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/**
* In James' testing the byte and int caches only ever had to store 2 and 4 arrays respectively.
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java
index 3305a02a1..ea0c44ae0 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadNode.java
@@ -26,7 +26,7 @@ import com.seibel.distanthorizons.core.util.objects.quadTree.iterators.QuadNodeD
import com.seibel.distanthorizons.core.util.objects.quadTree.iterators.QuadNodeDirectChildPosIterator;
import com.seibel.distanthorizons.core.util.objects.quadTree.iterators.QuadTreeNodeIterator;
import it.unimi.dsi.fastutil.longs.LongIterator;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.util.Iterator;
@@ -34,7 +34,7 @@ import java.util.function.Consumer;
public class QuadNode
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final long sectionPos;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java
index 175c0fca4..8812ec36c 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/objects/quadTree/QuadTree.java
@@ -19,6 +19,7 @@
package com.seibel.distanthorizons.core.util.objects.quadTree;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.blockPos.DhBlockPos2D;
import com.seibel.distanthorizons.core.pos.DhLodPos;
@@ -30,7 +31,7 @@ import com.seibel.distanthorizons.coreapi.util.MathUtil;
import com.seibel.distanthorizons.core.util.gridList.MovableGridRingList;
import it.unimi.dsi.fastutil.longs.LongArrayFIFOQueue;
import it.unimi.dsi.fastutil.longs.LongIterator;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@@ -43,7 +44,7 @@ import java.util.function.LongConsumer;
*/
public class QuadTree
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/DhThreadFactory.java b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/DhThreadFactory.java
index a7aee3918..c7e3b6646 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/DhThreadFactory.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/DhThreadFactory.java
@@ -25,7 +25,7 @@ import java.util.concurrent.ThreadFactory;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.ThreadUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
/**
@@ -34,7 +34,7 @@ import org.jetbrains.annotations.NotNull;
*/
public class DhThreadFactory implements ThreadFactory
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final String threadName;
public final int priority;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java
index ae7b5f581..632968dba 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PositionalLockProvider.java
@@ -3,7 +3,7 @@ package com.seibel.distanthorizons.core.util.threading;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhSectionPos;
import com.seibel.distanthorizons.core.util.ThreadUtil;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.Iterator;
import java.util.NoSuchElementException;
@@ -22,7 +22,7 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class PositionalLockProvider
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final ThreadPoolExecutor LOCK_CLEANUP_THREAD = ThreadUtil.makeSingleDaemonThreadPool("Positional Lock Cleanup");
private static final int CLEANUP_THREAD_MAX_FREQUENCY_IN_MS = 1000;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PriorityTaskPicker.java b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PriorityTaskPicker.java
index d9569cc81..c2ed4adae 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PriorityTaskPicker.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/PriorityTaskPicker.java
@@ -4,7 +4,7 @@ import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.config.listeners.IConfigListener;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.objects.RollingAverage;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.jetbrains.annotations.NotNull;
import java.util.*;
@@ -21,7 +21,7 @@ import java.util.stream.Stream;
*/
public class PriorityTaskPicker
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** the list of currently registered executors */
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/RateLimitedThreadPoolExecutor.java b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/RateLimitedThreadPoolExecutor.java
index dc932088a..ad142d2e9 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/util/threading/RateLimitedThreadPoolExecutor.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/util/threading/RateLimitedThreadPoolExecutor.java
@@ -22,7 +22,7 @@ package com.seibel.distanthorizons.core.util.threading;
import com.seibel.distanthorizons.core.config.Config;
import com.seibel.distanthorizons.core.config.types.ConfigEntry;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.concurrent.*;
import java.util.function.Supplier;
@@ -33,7 +33,7 @@ import java.util.function.Supplier;
*/
public class RateLimitedThreadPoolExecutor extends ThreadPoolExecutor
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final ConfigEntry runTimeRatioConfig = Config.Common.MultiThreading.threadRunTimeRatio;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/world/AbstractDhWorld.java b/core/src/main/java/com/seibel/distanthorizons/core/world/AbstractDhWorld.java
index 6b3d99f37..49d17ce64 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/world/AbstractDhWorld.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/world/AbstractDhWorld.java
@@ -21,7 +21,7 @@ package com.seibel.distanthorizons.core.world;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.logging.f3.F3Screen;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.io.Closeable;
import java.util.List;
@@ -32,7 +32,7 @@ import java.util.List;
*/
public abstract class AbstractDhWorld implements IDhWorld, Closeable
{
- protected static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ protected static final DhLogger LOGGER = new DhLoggerBuilder().build();
public final EWorldEnvironment environment;
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/world/DhApiWorldProxy.java b/core/src/main/java/com/seibel/distanthorizons/core/world/DhApiWorldProxy.java
index 60b18b16d..53c46b14b 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/world/DhApiWorldProxy.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/world/DhApiWorldProxy.java
@@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftSharedWrapper;
import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.ArrayList;
@@ -46,7 +46,7 @@ public class DhApiWorldProxy implements IDhApiWorldProxy
{
public static DhApiWorldProxy INSTANCE = new DhApiWorldProxy();
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
private static final IMinecraftClientWrapper MC_CLIENT = SingletonInjector.INSTANCE.get(IMinecraftClientWrapper.class);
private static final IMinecraftSharedWrapper MC_SHARED = SingletonInjector.INSTANCE.get(IMinecraftSharedWrapper.class);
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/ChunkLightStorage.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/ChunkLightStorage.java
index e04f296ef..54c95f7dc 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/ChunkLightStorage.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/chunk/ChunkLightStorage.java
@@ -19,10 +19,11 @@
package com.seibel.distanthorizons.core.wrapperInterfaces.chunk;
+import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.util.LodUtil;
import com.seibel.distanthorizons.coreapi.util.BitShiftUtil;
import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.util.ArrayList;
import java.util.Arrays;
@@ -39,7 +40,7 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class ChunkLightStorage
{
- private static final Logger LOGGER = LogManager.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
/** the minimum Y level in the chunk which this storage is storing light levels for (inclusive). */
diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/modAccessor/AbstractOptifineAccessor.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/modAccessor/AbstractOptifineAccessor.java
index 075a58f23..e606533c6 100644
--- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/modAccessor/AbstractOptifineAccessor.java
+++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/modAccessor/AbstractOptifineAccessor.java
@@ -23,7 +23,7 @@ import com.seibel.distanthorizons.api.enums.rendering.EDhApiFogDrawMode;
import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftClientWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -37,7 +37,7 @@ import java.lang.reflect.InvocationTargetException;
*/
public abstract class AbstractOptifineAccessor implements IOptifineAccessor
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public Field ofFogField = null;
diff --git a/core/src/main/resources/assets/distanthorizons/lang/en_us.json b/core/src/main/resources/assets/distanthorizons/lang/en_us.json
index eac6d836c..be9c2936a 100644
--- a/core/src/main/resources/assets/distanthorizons/lang/en_us.json
+++ b/core/src/main/resources/assets/distanthorizons/lang/en_us.json
@@ -673,18 +673,25 @@
"distanthorizons.config.common.logging.@tooltip":
"Controls how logging should be handled.",
- "distanthorizons.config.common.logging.logWorldGenEvent":
- "World Gen Events",
- "distanthorizons.config.common.logging.logWorldGenPerformance":
- "World Gen Performance",
- "distanthorizons.config.common.logging.logWorldGenLoadEvent":
- "World Gen Load Events",
- "distanthorizons.config.common.logging.logRendererBufferEvent":
- "Renderer Buffer Events",
- "distanthorizons.config.common.logging.logRendererGLEvent":
- "OpenGL Events",
- "distanthorizons.config.common.logging.logNetworkEvent":
- "Network Events",
+ "distanthorizons.config.common.logging.globalFileMaxLevel":
+ "Global File Max",
+ "distanthorizons.config.common.logging.globalChatMaxLevel":
+ "Global Chat Max",
+
+ "distanthorizons.config.common.logging.logWorldGenEventToFile":
+ "World Gen Events - File",
+ "distanthorizons.config.common.logging.logWorldGenPerformanceToFile":
+ "World Gen Performance - File",
+ "distanthorizons.config.common.logging.logWorldGenChunkLoadEventToFile":
+ "World Gen Load Events - File",
+ "distanthorizons.config.common.logging.logRendererEventToFile":
+ "Renderer Events - File",
+ "distanthorizons.config.common.logging.logRendererGLEventToFile":
+ "OpenGL Events - File",
+ "distanthorizons.config.common.logging.logRendererGLEventToChat":
+ "OpenGL Events - Chat",
+ "distanthorizons.config.common.logging.logNetworkEventToFile":
+ "Network Events - File",
"distanthorizons.config.common.logging.warning":
"Warnings",
@@ -1014,34 +1021,19 @@
"distanthorizons.config.enum.EDhApiGlProfileMode.ANY":
"Any",
- "distanthorizons.config.enum.EDhApiLoggerMode.DISABLED":
- "Disabled",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_ALL_TO_FILE":
- "File: All, Chat: Off",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_ERROR_TO_CHAT":
- "File: All, Chat: Error",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_WARNING_TO_CHAT":
- "File: All, Chat: Warning",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_INFO_TO_CHAT":
- "File: All, Chat: Info",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_DEBUG_TO_CHAT":
- "File: All, Chat: Debug",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_ALL_TO_CHAT":
- "File: All, Chat: All",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_FILE":
- "File: Error, Chat: Error",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_WARNING_TO_CHAT_AND_FILE":
- "File: Warning, Chat: Warning",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_INFO_TO_CHAT_AND_FILE":
- "File: Info, Chat: Info",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_DEBUG_TO_CHAT_AND_FILE":
- "File: Debug, Chat: Debug",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_WARNING_TO_CHAT_AND_INFO_TO_FILE":
- "File: Info, Chat: Warning",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE":
- "File: Info, Chat: Error",
- "distanthorizons.config.enum.EDhApiLoggerMode.LOG_ERROR_TO_CHAT_AND_WARNING_TO_FILE":
- "File: Warning, Chat: Error",
+ "distanthorizons.config.enum.EDhApiLoggerLevel.ALL":
+ "1. All",
+ "distanthorizons.config.enum.EDhApiLoggerLevel.DEBUG":
+ "2. Debug",
+ "distanthorizons.config.enum.EDhApiLoggerLevel.INFO":
+ "3. Info",
+ "distanthorizons.config.enum.EDhApiLoggerLevel.WARN":
+ "4. Warn",
+ "distanthorizons.config.enum.EDhApiLoggerLevel.ERROR":
+ "5. Error",
+ "distanthorizons.config.enum.EDhApiLoggerLevel.DISABLED":
+ "6. Disabled",
+
"distanthorizons.config.enum.EDhApiGpuUploadMethod.AUTO":
"Auto",
diff --git a/core/src/test/java/tests/DhRepoSqliteTest.java b/core/src/test/java/tests/DhRepoSqliteTest.java
index 669429382..a86719c88 100644
--- a/core/src/test/java/tests/DhRepoSqliteTest.java
+++ b/core/src/test/java/tests/DhRepoSqliteTest.java
@@ -24,7 +24,7 @@ import com.seibel.distanthorizons.core.pos.DhChunkPos;
import com.seibel.distanthorizons.core.sql.DatabaseUpdater;
import com.seibel.distanthorizons.core.sql.repo.AbstractDhRepo;
import com.seibel.distanthorizons.core.sql.repo.phantoms.AutoClosableTrackingWrapper;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -44,7 +44,7 @@ import java.util.concurrent.CompletableFuture;
*/
public class DhRepoSqliteTest
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
public static String DATABASE_TYPE = "jdbc:sqlite";
public static String DB_FILE_NAME = "test.sqlite";
diff --git a/core/src/test/java/tests/QuadTreeTest.java b/core/src/test/java/tests/QuadTreeTest.java
index 4c82824db..4613a3869 100644
--- a/core/src/test/java/tests/QuadTreeTest.java
+++ b/core/src/test/java/tests/QuadTreeTest.java
@@ -29,7 +29,7 @@ import com.seibel.distanthorizons.core.util.objects.quadTree.QuadNode;
import com.seibel.distanthorizons.core.util.objects.quadTree.QuadTree;
import it.unimi.dsi.fastutil.longs.LongIterator;
import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.apache.logging.log4j.core.config.Configurator;
import org.jetbrains.annotations.Nullable;
import org.junit.Assert;
@@ -42,7 +42,7 @@ import java.util.concurrent.atomic.AtomicInteger;
public class QuadTreeTest
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
static
diff --git a/core/src/test/java/tests/SquareIntersectTest.java b/core/src/test/java/tests/SquareIntersectTest.java
index c5118023d..08c988e78 100644
--- a/core/src/test/java/tests/SquareIntersectTest.java
+++ b/core/src/test/java/tests/SquareIntersectTest.java
@@ -22,7 +22,7 @@ package tests;
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
import com.seibel.distanthorizons.core.pos.DhLodPos;
import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
+import com.seibel.distanthorizons.core.logging.DhLogger;
import org.apache.logging.log4j.core.config.Configurator;
import org.junit.Assert;
import org.junit.Test;
@@ -30,7 +30,7 @@ import org.junit.Test;
@Deprecated
public class SquareIntersectTest
{
- private static final Logger LOGGER = DhLoggerBuilder.getLogger();
+ private static final DhLogger LOGGER = new DhLoggerBuilder().build();
static
{