44import net .fabricmc .fabric .api .event .lifecycle .v1 .ServerLifecycleEvents ;
55import net .minecraft .server .MinecraftServer ;
66import 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 ;
711import org .java_websocket .server .WebSocketServer ;
812import org .java_websocket .handshake .ClientHandshake ;
913import org .java_websocket .WebSocket ;
10- import org .jetbrains .annotations .NotNull ;
1114import org .slf4j .Logger ;
1215import 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+
1620import java .net .InetSocketAddress ;
1721import java .util .Collections ;
1822import 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