Skip to content

Commit a83c17e

Browse files
committed
feat: just works
1 parent d3e572d commit a83c17e

File tree

1 file changed

+19
-31
lines changed

1 file changed

+19
-31
lines changed

src/main/java/dev/loat/websocket_console/WebSocketConsole.java

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
55
import net.minecraft.server.MinecraftServer;
66
import net.minecraft.text.Text;
7+
import org.apache.logging.log4j.Level;
8+
import org.apache.logging.log4j.core.LogEvent;
9+
import org.apache.logging.log4j.core.LoggerContext;
10+
import org.apache.logging.log4j.core.layout.PatternLayout;
711
import org.java_websocket.server.WebSocketServer;
812
import org.java_websocket.handshake.ClientHandshake;
913
import org.java_websocket.WebSocket;
10-
import org.jetbrains.annotations.NotNull;
1114
import org.slf4j.Logger;
1215
import org.slf4j.LoggerFactory;
1316

14-
import java.io.OutputStream;
15-
import java.io.PrintStream;
17+
import org.apache.logging.log4j.LogManager;
18+
import org.apache.logging.log4j.core.appender.AbstractAppender;
19+
1620
import java.net.InetSocketAddress;
1721
import java.util.Collections;
1822
import java.util.HashSet;
@@ -32,9 +36,12 @@ public void onInitialize() {
3236
webSocketServer.start();
3337
LOGGER.info("Starting WebSocket server on port 8080 ...");
3438

35-
36-
System.setOut(new PrintStream(new ConsoleOutputStream(System.out), true));
37-
System.setErr(new PrintStream(new ConsoleOutputStream(System.err), true));
39+
var ctx = (LoggerContext)LogManager.getContext(false);
40+
var logger = ctx.getConfiguration().getLoggers().get("");
41+
var webSocketLogAppender = new WebSocketLogAppender();
42+
webSocketLogAppender.start();
43+
logger.addAppender(webSocketLogAppender, Level.DEBUG, null);
44+
ctx.updateLoggers();
3845
});
3946

4047
ServerLifecycleEvents.SERVER_STOPPING.register(server -> {
@@ -50,12 +57,6 @@ public void onInitialize() {
5057
}
5158

5259
public static void broadcastMessage(String message) {
53-
if (serverInstance != null) {
54-
serverInstance.execute(() -> {
55-
Text text = Text.of(message);
56-
serverInstance.getPlayerManager().broadcast(text, false);
57-
});
58-
}
5960
if (webSocketServer != null) {
6061
webSocketServer.broadcastToClients(message);
6162
}
@@ -96,7 +97,7 @@ public void onError(WebSocket conn, Exception exception) {
9697

9798
@Override
9899
public void onStart() {
99-
LOGGER.info("WebSocket server started.");
100+
// LOGGER.info("WebSocket server started.");
100101
}
101102

102103
public void broadcastToClients(String message) {
@@ -108,27 +109,14 @@ public void broadcastToClients(String message) {
108109
}
109110
}
110111

111-
private static class ConsoleOutputStream extends OutputStream {
112-
private final PrintStream original;
113-
114-
public ConsoleOutputStream(PrintStream original) {
115-
this.original = original;
116-
}
117-
118-
@Override
119-
public void write(int b) {
120-
original.write(b);
121-
if (b == '\n') {
122-
return;
123-
}
124-
WebSocketConsole.broadcastMessage(String.valueOf((char) b));
112+
private static class WebSocketLogAppender extends AbstractAppender {
113+
protected WebSocketLogAppender() {
114+
super("WebSocketLogAppender", null, PatternLayout.createDefaultLayout(), false);
125115
}
126116

127117
@Override
128-
public void write(byte @NotNull [] bytes, int off, int len) {
129-
String message = new String(bytes, off, len);
130-
original.write(bytes, off, len);
131-
WebSocketConsole.broadcastMessage(message);
118+
public void append(LogEvent event) {
119+
WebSocketConsole.broadcastMessage(event.getMessage().getFormattedMessage());
132120
}
133121
}
134122
}

0 commit comments

Comments
 (0)