Refactor DebugLogger
Some checks failed
/ build (push) Failing after 6m2s

Signed-off-by: Minecon724 <minecon724@noreply.git.m724.eu>
This commit is contained in:
Minecon724 2025-05-15 09:03:48 +02:00
commit 352807483c
Signed by: Minecon724
GPG key ID: A02E6E67AB961189

View file

@ -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;
}
}