mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 04:17:44 +01:00
Use AsyncAppender instead of AsyncLoggerContextSelector to keep loggging IO off main thread (#6381)
This commit is contained in:
parent
0850e18436
commit
1093b2f26a
@ -497,25 +497,18 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/resources/log4j2.xml
|
--- a/src/main/resources/log4j2.xml
|
||||||
+++ b/src/main/resources/log4j2.xml
|
+++ b/src/main/resources/log4j2.xml
|
||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
</Policies>
|
|
||||||
<DefaultRolloverStrategy max="1000"/>
|
<DefaultRolloverStrategy max="1000"/>
|
||||||
</RollingRandomAccessFile>
|
</RollingRandomAccessFile>
|
||||||
|
<Async name="Async">
|
||||||
|
+ <AppenderRef ref="rewrite"/>
|
||||||
|
+ </Async>
|
||||||
+ <Rewrite name="rewrite">
|
+ <Rewrite name="rewrite">
|
||||||
+ <StacktraceDeobfuscatingRewritePolicy />
|
+ <StacktraceDeobfuscatingRewritePolicy />
|
||||||
+ <AppenderRef ref="File"/>
|
<AppenderRef ref="File"/>
|
||||||
+ <AppenderRef ref="TerminalConsole" level="info"/>
|
<AppenderRef ref="TerminalConsole" level="info"/>
|
||||||
+ <AppenderRef ref="ServerGuiConsole" level="info"/>
|
<AppenderRef ref="ServerGuiConsole" level="info"/>
|
||||||
|
- </Async>
|
||||||
+ </Rewrite>
|
+ </Rewrite>
|
||||||
</Appenders>
|
</Appenders>
|
||||||
<Loggers>
|
<Loggers>
|
||||||
<Root level="info">
|
<Root level="info">
|
||||||
<filters>
|
|
||||||
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
|
|
||||||
</filters>
|
|
||||||
- <AppenderRef ref="File"/>
|
|
||||||
- <AppenderRef ref="TerminalConsole" level="info"/>
|
|
||||||
- <AppenderRef ref="ServerGuiConsole" level="info"/>
|
|
||||||
+ <AppenderRef ref="rewrite"/>
|
|
||||||
</Root>
|
|
||||||
</Loggers>
|
|
||||||
</Configuration>
|
|
||||||
|
@ -353,8 +353,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
OptionSet options = null;
|
OptionSet options = null;
|
||||||
|
|
||||||
+ // Paper start - preload logger classes to avoid plugins mixing versions
|
+ // 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.Core");
|
||||||
|
+ tryPreloadClass("org.apache.logging.log4j.core.appender.AsyncAppender");
|
||||||
+ tryPreloadClass("org.apache.logging.log4j.core.Appender");
|
+ tryPreloadClass("org.apache.logging.log4j.core.Appender");
|
||||||
+ tryPreloadClass("org.apache.logging.log4j.core.ContextDataInjector");
|
+ tryPreloadClass("org.apache.logging.log4j.core.ContextDataInjector");
|
||||||
+ tryPreloadClass("org.apache.logging.log4j.core.Filter");
|
+ tryPreloadClass("org.apache.logging.log4j.core.Filter");
|
||||||
|
@ -233,6 +233,15 @@ diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/resources/log4j2.xml
|
--- a/src/main/resources/log4j2.xml
|
||||||
+++ b/src/main/resources/log4j2.xml
|
+++ b/src/main/resources/log4j2.xml
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
<DefaultRolloverStrategy max="1000"/>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
<Async name="Async">
|
||||||
|
- <AppenderRef ref="rewrite"/>
|
||||||
|
+ <AppenderRef ref="rewrite2"/>
|
||||||
|
</Async>
|
||||||
|
<Rewrite name="rewrite">
|
||||||
|
<StacktraceDeobfuscatingRewritePolicy />
|
||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
<AppenderRef ref="TerminalConsole" level="info"/>
|
<AppenderRef ref="TerminalConsole" level="info"/>
|
||||||
<AppenderRef ref="ServerGuiConsole" level="info"/>
|
<AppenderRef ref="ServerGuiConsole" level="info"/>
|
||||||
@ -244,11 +253,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
</Appenders>
|
</Appenders>
|
||||||
<Loggers>
|
<Loggers>
|
||||||
<Root level="info">
|
<Root level="info">
|
||||||
<filters>
|
|
||||||
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
|
|
||||||
</filters>
|
|
||||||
- <AppenderRef ref="rewrite"/>
|
|
||||||
+ <AppenderRef ref="rewrite2"/>
|
|
||||||
</Root>
|
|
||||||
</Loggers>
|
|
||||||
</Configuration>
|
|
||||||
|
@ -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 @@
|
||||||
|
</Policies>
|
||||||
|
<DefaultRolloverStrategy max="1000"/>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
+ <Async name="Async">
|
||||||
|
+ <AppenderRef ref="File"/>
|
||||||
|
+ <AppenderRef ref="TerminalConsole" level="info"/>
|
||||||
|
+ <AppenderRef ref="ServerGuiConsole" level="info"/>
|
||||||
|
+ </Async>
|
||||||
|
</Appenders>
|
||||||
|
<Loggers>
|
||||||
|
<Root level="info">
|
||||||
|
<filters>
|
||||||
|
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
|
||||||
|
</filters>
|
||||||
|
- <AppenderRef ref="File"/>
|
||||||
|
- <AppenderRef ref="TerminalConsole" level="info"/>
|
||||||
|
- <AppenderRef ref="ServerGuiConsole" level="info"/>
|
||||||
|
+ <AppenderRef ref="Async"/>
|
||||||
|
</Root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
@ -1,49 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Minecrell <minecrell@minecrell.net>
|
|
||||||
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
|
|
Loading…
Reference in New Issue
Block a user