From b0bb87241e3ca3a38ee92fdcc0260fabedf9363e Mon Sep 17 00:00:00 2001 From: Minecrell <minecrell@minecrell.net> Date: Mon, 18 Sep 2017 12:00:03 +0200 Subject: [PATCH] Use Log4j IOStreams to redirect System.out/err to logger Log4j2 provides an optimized implementation of PrintStream that redirects its output to a logger. Use it instead of a custom implementation for minor performance improvements and some fixes. With the old implementation, each call to System.print() results in a separate line, even though it should not result in a line break. Log4j's implementation handles it correctly. diff --git a/pom.xml b/pom.xml index b1f008738b..14c4ec250c 100644 --- a/pom.xml +++ b/pom.xml @@ -63,6 +63,11 @@ <version>2.8.1</version> <scope>runtime</scope> </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-iostreams</artifactId> + <version>2.8.1</version> + </dependency> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java index d34f772fae..ec257ba31f 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -155,8 +155,10 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer */ // Paper end - System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true)); - System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true)); + // Paper start - Use Log4j IOStreams + System.setOut(org.apache.logging.log4j.io.IoBuilder.forLogger(logger).setLevel(Level.INFO).buildPrintStream()); + System.setErr(org.apache.logging.log4j.io.IoBuilder.forLogger(logger).setLevel(Level.WARN).buildPrintStream()); + // Paper end // CraftBukkit end thread.setDaemon(true); -- 2.25.1