From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Miguel=20Moreno?= <josemmo@pm.me> Date: Sat, 5 Jun 2021 13:45:15 +0200 Subject: [PATCH] Fix plugin loggers on server shutdown diff --git a/src/main/java/io/papermc/paper/log/CustomLogManager.java b/src/main/java/io/papermc/paper/log/CustomLogManager.java new file mode 100644 index 0000000000000000000000000000000000000000..c1d3bac79bb8b4796c013ff4472f75dcd79602dc --- /dev/null +++ b/src/main/java/io/papermc/paper/log/CustomLogManager.java @@ -0,0 +1,26 @@ +package io.papermc.paper.log; + +import java.util.logging.LogManager; + +public class CustomLogManager extends LogManager { + private static CustomLogManager instance; + + public CustomLogManager() { + instance = this; + } + + @Override + public void reset() { + // Ignore calls to this method + } + + private void superReset() { + super.reset(); + } + + public static void forceReset() { + if (instance != null) { + instance.superReset(); + } + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 60a84de276885009310904afc90516d6106458d1..ce81ba5345c8d2fde8a2534b9673275c7e86af8b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -997,6 +997,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa net.minecrell.terminalconsole.TerminalConsoleAppender.close(); // Paper - Use TerminalConsoleAppender } catch (Exception e) { } + io.papermc.paper.log.CustomLogManager.forceReset(); // Paper - Reset loggers after shutdown this.onServerExit(); // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java index 0aef4fc4a89e627bc80504d7402f1ca2cdc95a74..f30621be24c6c3a4f173436fce1ad1c13507c84f 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -20,6 +20,12 @@ public class Main { public static boolean useJline = true; public static boolean useConsole = true; + // Paper start - Hijack log manager to ensure logging on shutdown + static { + System.setProperty("java.util.logging.manager", "io.papermc.paper.log.CustomLogManager"); + } + // Paper end + public static void main(String[] args) { // Paper start final String warnWhenLegacyFormattingDetected = String.join(".", "net", "kyori", "adventure", "text", "warnWhenLegacyFormattingDetected");