diff --git a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch index 48dbb5c1eb..9c1f9938d3 100644 --- a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch +++ b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch @@ -497,25 +497,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -0,0 +0,0 @@ - + ++ ++ + + -+ -+ -+ + + + +- + - - - -- -- -- -+ - - - diff --git a/patches/server/Improved-Watchdog-Support.patch b/patches/server/Improved-Watchdog-Support.patch index f479c147e7..416a219773 100644 --- a/patches/server/Improved-Watchdog-Support.patch +++ b/patches/server/Improved-Watchdog-Support.patch @@ -353,8 +353,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 OptionSet options = null; + // Paper start - preload logger classes to avoid plugins mixing versions -+ tryPreloadClass("com.destroystokyo.paper.log.LogFullPolicy"); + tryPreloadClass("org.apache.logging.log4j.core.Core"); ++ tryPreloadClass("org.apache.logging.log4j.core.appender.AsyncAppender"); + tryPreloadClass("org.apache.logging.log4j.core.Appender"); + tryPreloadClass("org.apache.logging.log4j.core.ContextDataInjector"); + tryPreloadClass("org.apache.logging.log4j.core.Filter"); diff --git a/patches/server/Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch b/patches/server/Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch index 4edf555e0f..dd46eae415 100644 --- a/patches/server/Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch +++ b/patches/server/Rewrite-LogEvents-to-contain-the-source-jars-in-stac.patch @@ -233,6 +233,15 @@ diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml +@@ -0,0 +0,0 @@ + + + +- ++ + + + @@ -0,0 +0,0 @@ @@ -244,11 +253,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - - - -- -+ - - - diff --git a/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch new file mode 100644 index 0000000000..2ad43fe0ea --- /dev/null +++ b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch @@ -0,0 +1,44 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> +Date: Thu, 12 Aug 2021 04:46:41 -0700 +Subject: [PATCH] Use AsyncAppender to keep logging IO off main thread + + +diff --git a/build.gradle.kts b/build.gradle.kts +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -0,0 +0,0 @@ dependencies { + } + runtimeOnly("org.xerial:sqlite-jdbc:3.34.0") + runtimeOnly("mysql:mysql-connector-java:8.0.23") // Paper ++ runtimeOnly("com.lmax:disruptor:3.4.4") // Paper + + runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.1") + runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.0") +diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/resources/log4j2.xml ++++ b/src/main/resources/log4j2.xml +@@ -0,0 +0,0 @@ + + + ++ ++ ++ ++ ++ + + + + + + +- +- +- ++ + + + diff --git a/patches/server/Use-asynchronous-Log4j-2-loggers.patch b/patches/server/Use-asynchronous-Log4j-2-loggers.patch deleted file mode 100644 index 2e4b7dd4b4..0000000000 --- a/patches/server/Use-asynchronous-Log4j-2-loggers.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Minecrell -Date: Tue, 17 Jul 2018 16:42:17 +0200 -Subject: [PATCH] Use asynchronous Log4j 2 loggers - - -diff --git a/build.gradle.kts b/build.gradle.kts -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/build.gradle.kts -+++ b/build.gradle.kts -@@ -0,0 +0,0 @@ dependencies { - } - runtimeOnly("org.xerial:sqlite-jdbc:3.34.0") - runtimeOnly("mysql:mysql-connector-java:8.0.23") // Paper -+ runtimeOnly("com.lmax:disruptor:3.4.2") // Paper - - runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.1") - runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.7.0") -diff --git a/src/main/java/com/destroystokyo/paper/log/LogFullPolicy.java b/src/main/java/com/destroystokyo/paper/log/LogFullPolicy.java -new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 ---- /dev/null -+++ b/src/main/java/com/destroystokyo/paper/log/LogFullPolicy.java -@@ -0,0 +0,0 @@ -+package com.destroystokyo.paper.log; -+ -+import org.apache.logging.log4j.Level; -+import org.apache.logging.log4j.core.async.AsyncQueueFullPolicy; -+import org.apache.logging.log4j.core.async.EventRoute; -+ -+public final class LogFullPolicy implements AsyncQueueFullPolicy { -+ -+ /* -+ * Prevents log calls being logged out of order when the log queue is full. -+ */ -+ -+ @Override -+ public EventRoute getRoute(final long backgroundThreadId, final Level level) { -+ return EventRoute.ENQUEUE; -+ } -+} -diff --git a/src/main/resources/log4j2.component.properties b/src/main/resources/log4j2.component.properties -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/resources/log4j2.component.properties -+++ b/src/main/resources/log4j2.component.properties -@@ -1 +1,3 @@ -+Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -+log4j2.AsyncQueueFullPolicy="com.destroystokyo.paper.log.LogFullPolicy" - log4j.skipJansi=true