From 352807483c75c1c66c6b8e769d0b277662bcb69e Mon Sep 17 00:00:00 2001 From: Minecon724 Date: Thu, 15 May 2025 09:03:48 +0200 Subject: [PATCH] Refactor DebugLogger Signed-off-by: Minecon724 --- src/main/java/eu/m724/tweaks/DebugLogger.java | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/eu/m724/tweaks/DebugLogger.java b/src/main/java/eu/m724/tweaks/DebugLogger.java index 9bf66c6..803b52d 100644 --- a/src/main/java/eu/m724/tweaks/DebugLogger.java +++ b/src/main/java/eu/m724/tweaks/DebugLogger.java @@ -10,8 +10,11 @@ import eu.m724.tweaks.module.TweaksModule; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; +import java.util.stream.IntStream; public class DebugLogger { + private DebugLogger() {} static Logger logger; public static void info(String message, Object... format) { @@ -35,20 +38,16 @@ public class DebugLogger { } private static void log(Level level, String message, Object... format) { - if (logger.getLevel().intValue() > level.intValue()) return; - var caller = Thread.currentThread().getStackTrace()[3].getClassName(); - - if (caller.equals(TweaksModule.class.getName())) { - var pcaller = Thread.currentThread().getStackTrace()[4].getClassName(); - if (pcaller.endsWith("Module")) - caller = pcaller; + if (!logger.isLoggable(level)) { + return; } - if (caller.startsWith("eu.m724.tweaks.")) - caller = caller.substring(15); + message = message.formatted(format); - message = "[" + caller + "] " + message.formatted(format); + if (logger.getLevel().intValue() <= Level.FINE.intValue()) { + message = "[" + getCaller() + "] " + message; + } if (level.intValue() < Level.INFO.intValue()) { // levels below info are never logged even if set for some reason // colors text gray (cyan is close to gray) @@ -61,5 +60,30 @@ public class DebugLogger { } logger.log(level, message); + + } + + private static String getCaller() { + String caller = Thread.currentThread().getStackTrace()[4].getClassName(); + + // TweaksModule has helper functions that log, we want to label the logs + if (caller.equals(TweaksModule.class.getName())) { + String pcaller = Thread.currentThread().getStackTrace()[5].getClassName(); + if (pcaller.endsWith("Module")) + caller = pcaller; + } + + if (caller.startsWith("eu.m724.tweaks.")) { + caller = caller.substring(15); + + String[] packages = caller.split("\\."); + + caller = IntStream.range(0, packages.length - 1) + .mapToObj(i -> packages[i].substring(0, 2)) + .collect(Collectors.joining(".")) + "." + packages[packages.length - 1]; + // TODO leading dot or no dot? + } + + return caller; } }