Skip to content

Commit 3b1bfcf

Browse files
committed
Refactor Fabric logging to look completely native
1 parent 7763c6c commit 3b1bfcf

File tree

9 files changed

+137
-19
lines changed

9 files changed

+137
-19
lines changed

fabric/src/main/java/io/github/retrooper/packetevents/factory/fabric/FabricPacketEventsAPI.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.github.retrooper.packetevents.PacketEvents;
2222
import com.github.retrooper.packetevents.PacketEventsAPI;
2323
import com.github.retrooper.packetevents.injector.ChannelInjector;
24-
import com.github.retrooper.packetevents.manager.player.PlayerManager;
2524
import com.github.retrooper.packetevents.manager.protocol.ProtocolManager;
2625
import com.github.retrooper.packetevents.manager.registry.RegistryManager;
2726
import com.github.retrooper.packetevents.manager.server.ServerManager;
@@ -34,15 +33,14 @@
3433
import io.github.retrooper.packetevents.PacketEventsMod;
3534
import io.github.retrooper.packetevents.impl.netty.NettyManagerImpl;
3635
import io.github.retrooper.packetevents.manager.AbstractFabricPlayerManager;
37-
import io.github.retrooper.packetevents.manager.FabricLogger;
36+
import io.github.retrooper.packetevents.manager.FabricLoggerManager;
3837
import io.github.retrooper.packetevents.manager.FabricProtocolManager;
3938
import io.github.retrooper.packetevents.manager.FabricServerManager;
4039
import io.github.retrooper.packetevents.manager.InternalFabricPacketListener;
40+
import io.github.retrooper.packetevents.manager.logger.jul.JULoggerFactory;
4141
import io.github.retrooper.packetevents.util.viaversion.ViaVersionUtil;
42-
import io.netty.util.internal.logging.Slf4JLoggerFactory;
4342
import net.fabricmc.api.EnvType;
4443
import net.fabricmc.api.ModInitializer;
45-
import net.fabricmc.loader.impl.game.minecraft.Slf4jLogHandler;
4644

4745
import java.util.Locale;
4846
import java.util.logging.Logger;
@@ -56,7 +54,8 @@ public class FabricPacketEventsAPI extends PacketEventsAPI<ModInitializer> {
5654
private final ServerManager serverManager;
5755
private final ChannelInjector injector;
5856
private final NettyManager nettyManager = new NettyManagerImpl();
59-
private final LogManager logManager = FabricLogger.createModLogger("PacketEvents");
57+
private final LogManager logManager = FabricLoggerManager.createModLogger("PacketEvents");
58+
private final Logger logger = JULoggerFactory.createLogger("PacketEvents");
6059

6160
private boolean loaded;
6261
private boolean initialized;
@@ -174,6 +173,11 @@ public LogManager getLogManager() {
174173
return this.logManager;
175174
}
176175

176+
@Override
177+
public Logger getLogger() {
178+
return this.logger;
179+
}
180+
177181
@Override
178182
public AbstractFabricPlayerManager getPlayerManager() {
179183
return this.environment == EnvType.SERVER ? FabricPacketEventsAPIManagerFactory.getLazyPlayerManagerHolder().get() : FabricPacketEventsAPIManagerFactory.getClientLazyPlayerManagerHolder().get();

fabric/src/main/java/io/github/retrooper/packetevents/manager/FabricLogger.java renamed to fabric/src/main/java/io/github/retrooper/packetevents/manager/FabricLoggerManager.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,13 @@
2020

2121
import com.github.retrooper.packetevents.util.LogManager;
2222
import net.kyori.adventure.text.format.NamedTextColor;
23-
import org.jetbrains.annotations.Nullable;
2423
import java.util.logging.Logger;
2524

26-
import net.kyori.adventure.text.format.NamedTextColor;
2725
import java.lang.reflect.Method;
2826
import java.util.logging.Level;
29-
import java.util.logging.Logger;
3027
import java.util.regex.Pattern;
3128

32-
public class FabricLogger extends LogManager {
29+
public class FabricLoggerManager extends LogManager {
3330
private static final Pattern STRIP_COLOR_PATTERN = Pattern.compile("§[0-9A-FK-ORa-fk-or]"); // Example pattern to strip Minecraft color codes
3431

3532
private final Object logger;
@@ -40,7 +37,7 @@ private enum LoggerType {
4037
SLF4J, LOG4J, JDK
4138
}
4239

43-
private FabricLogger(Object logger, LoggerType loggerType) {
40+
private FabricLoggerManager(Object logger, LoggerType loggerType) {
4441
this.logger = logger;
4542
this.loggerType = loggerType;
4643
}
@@ -142,14 +139,14 @@ private void logWithJdk(Level level, String message) {
142139
}
143140

144141
// Factory method to create a mod-specific logger with fallback
145-
public static FabricLogger createModLogger(String modId) {
142+
public static FabricLoggerManager createModLogger(String modId) {
146143
// Try SLF4J first
147144
try {
148145
Class<?> slf4jLoggerClass = Class.forName("org.slf4j.Logger");
149146
Class<?> slf4jLoggerFactoryClass = Class.forName("org.slf4j.LoggerFactory");
150147
Method getLoggerMethod = slf4jLoggerFactoryClass.getMethod("getLogger", String.class);
151148
Object slf4jLogger = getLoggerMethod.invoke(null, modId);
152-
return new FabricLogger(slf4jLogger, LoggerType.SLF4J);
149+
return new FabricLoggerManager(slf4jLogger, LoggerType.SLF4J);
153150
} catch (ClassNotFoundException e) {
154151
// SLF4J not found, try Log4j next
155152
} catch (Exception e) {
@@ -161,7 +158,7 @@ public static FabricLogger createModLogger(String modId) {
161158
Class<?> log4jLogManagerClass = Class.forName("org.apache.logging.log4j.LogManager");
162159
Method getLoggerMethod = log4jLogManagerClass.getMethod("getLogger", String.class);
163160
Object log4jLogger = getLoggerMethod.invoke(null, modId);
164-
return new FabricLogger(log4jLogger, LoggerType.LOG4J);
161+
return new FabricLoggerManager(log4jLogger, LoggerType.LOG4J);
165162
} catch (ClassNotFoundException e) {
166163
// Log4j not found, fall back to JDK Logger
167164
} catch (Exception e) {
@@ -170,6 +167,6 @@ public static FabricLogger createModLogger(String modId) {
170167

171168
// Fall back to JDK Logger
172169
Logger jdkLogger = Logger.getLogger(modId);
173-
return new FabricLogger(jdkLogger, LoggerType.JDK);
170+
return new FabricLoggerManager(jdkLogger, LoggerType.JDK);
174171
}
175172
}

fabric/src/main/java/io/github/retrooper/packetevents/manager/logger/FabricLogger.java renamed to fabric/src/main/java/io/github/retrooper/packetevents/manager/logger/AbstractFabricLogger.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import java.util.logging.Logger;
66
import java.util.regex.Pattern;
77

8-
public abstract class FabricLogger extends LogManager {
8+
public abstract class AbstractFabricLogger extends LogManager {
99
protected static final Pattern STRIP_COLOR_PATTERN = Pattern.compile("§[0-9A-FK-ORa-fk-or]");
1010

1111
protected String stripColorCodes(String message) {
1212
return STRIP_COLOR_PATTERN.matcher(message).replaceAll("");
1313
}
1414

15-
public static FabricLogger createModLogger(String modId) {
15+
public static AbstractFabricLogger createModLogger(String modId) {
1616
// Try SLF4J
1717
try {
1818
org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(modId);

fabric/src/main/java/io/github/retrooper/packetevents/manager/logger/JdkFabricLogger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.logging.Level;
66
import java.util.logging.Logger;
77

8-
public class JdkFabricLogger extends FabricLogger {
8+
public class JdkFabricLogger extends AbstractFabricLogger {
99
private final Logger logger;
1010

1111
public JdkFabricLogger(Logger logger) {

fabric/src/main/java/io/github/retrooper/packetevents/manager/logger/Log4jFabricLogger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.logging.Level;
66

7-
public class Log4jFabricLogger extends FabricLogger {
7+
public class Log4jFabricLogger extends AbstractFabricLogger {
88
private final org.apache.logging.log4j.Logger logger;
99

1010
public Log4jFabricLogger(org.apache.logging.log4j.Logger logger) {

fabric/src/main/java/io/github/retrooper/packetevents/manager/logger/Slf4jFabricLogger.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import java.util.logging.Level;
66

7-
public class Slf4jFabricLogger extends FabricLogger {
7+
public class Slf4jFabricLogger extends AbstractFabricLogger {
88
private final org.slf4j.Logger logger;
99

1010
public Slf4jFabricLogger(org.slf4j.Logger logger) {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.github.retrooper.packetevents.manager.logger.jul;
2+
3+
import java.util.logging.Logger;
4+
5+
public class JULoggerFactory {
6+
public static Logger createLogger(String name) {
7+
try {
8+
return new Slf4jBackedJULogger(name);
9+
} catch (NoClassDefFoundError | Exception ignored) {
10+
}
11+
try {
12+
return new Log4jBackedJULogger(name);
13+
} catch (NoClassDefFoundError | Exception ignored) {
14+
}
15+
16+
return Logger.getLogger(name);
17+
}
18+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package io.github.retrooper.packetevents.manager.logger.jul;
2+
3+
import java.util.logging.Level;
4+
import java.util.logging.Logger;
5+
6+
public class Log4jBackedJULogger extends Logger {
7+
private final org.apache.logging.log4j.Logger log4jLogger;
8+
9+
protected Log4jBackedJULogger(String name) {
10+
super(name, null);
11+
this.log4jLogger = org.apache.logging.log4j.LogManager.getLogger(name);
12+
}
13+
14+
@Override
15+
public void log(Level level, String msg) {
16+
if (level == Level.SEVERE) {
17+
log4jLogger.error(msg);
18+
} else if (level == Level.WARNING) {
19+
log4jLogger.warn(msg);
20+
} else if (level == Level.INFO) {
21+
log4jLogger.info(msg);
22+
} else if (level == Level.CONFIG || level == Level.FINE) {
23+
log4jLogger.debug(msg);
24+
} else if (level == Level.FINER || level == Level.FINEST) {
25+
log4jLogger.trace(msg);
26+
} else {
27+
log4jLogger.info(msg);
28+
}
29+
}
30+
31+
@Override
32+
public void log(Level level, String msg, Throwable thrown) {
33+
if (level == Level.SEVERE) {
34+
log4jLogger.error(msg, thrown);
35+
} else if (level == Level.WARNING) {
36+
log4jLogger.warn(msg, thrown);
37+
} else if (level == Level.INFO) {
38+
log4jLogger.info(msg, thrown);
39+
} else if (level == Level.CONFIG || level == Level.FINE) {
40+
log4jLogger.debug(msg, thrown);
41+
} else if (level == Level.FINER || level == Level.FINEST) {
42+
log4jLogger.trace(msg, thrown);
43+
} else {
44+
log4jLogger.info(msg, thrown);
45+
}
46+
}
47+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.github.retrooper.packetevents.manager.logger.jul;
2+
3+
import org.slf4j.LoggerFactory;
4+
import org.slf4j.Marker;
5+
import org.slf4j.MarkerFactory;
6+
7+
import java.util.logging.Level;
8+
import java.util.logging.Logger;
9+
10+
public class Slf4jBackedJULogger extends Logger {
11+
private final org.slf4j.Logger slf4jLogger;
12+
private static final Marker MARKER = MarkerFactory.getMarker("JUL");
13+
14+
public Slf4jBackedJULogger(String name) {
15+
super(name, null);
16+
this.slf4jLogger = LoggerFactory.getLogger(name);
17+
}
18+
19+
@Override
20+
public void log(Level level, String msg) {
21+
if (level == Level.SEVERE) {
22+
slf4jLogger.error(MARKER, msg);
23+
} else if (level == Level.WARNING) {
24+
slf4jLogger.warn(MARKER, msg);
25+
} else if (level == Level.INFO) {
26+
slf4jLogger.info(MARKER, msg);
27+
} else if (level == Level.CONFIG || level == Level.FINE) {
28+
slf4jLogger.debug(MARKER, msg);
29+
} else if (level == Level.FINER || level == Level.FINEST) {
30+
slf4jLogger.trace(MARKER, msg);
31+
} else {
32+
slf4jLogger.info(MARKER, msg);
33+
}
34+
}
35+
36+
@Override
37+
public void log(Level level, String msg, Throwable thrown) {
38+
if (level.equals(Level.SEVERE)) {
39+
slf4jLogger.error(MARKER, msg, thrown);
40+
} else if (level.equals(Level.WARNING)) {
41+
slf4jLogger.warn(MARKER, msg, thrown);
42+
} else if (level.equals(Level.INFO)) {
43+
slf4jLogger.info(MARKER, msg, thrown);
44+
} else if (level.equals(Level.CONFIG) || level.equals(Level.FINE)) {
45+
slf4jLogger.debug(MARKER, msg, thrown);
46+
} else if (level.equals(Level.FINER) || level.equals(Level.FINEST)) {
47+
slf4jLogger.trace(MARKER, msg, thrown);
48+
} else {
49+
slf4jLogger.info(MARKER, msg, thrown);
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)