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 {