From a73f6cfadcc6772b7cf6f75c9119b63d812c185d Mon Sep 17 00:00:00 2001
From: Articdive <13535885+Articdive@users.noreply.github.com>
Date: Sat, 16 Mar 2024 10:43:37 +0100
Subject: [PATCH 1/7] Update TownyLogger to use Log4j 2.19.0
---
Towny/pom.xml | 2 +-
.../com/palmergames/bukkit/towny/Towny.java | 2 +-
.../palmergames/bukkit/towny/TownyLogger.java | 100 +++++++++---------
.../towny/command/TownyAdminCommand.java | 2 +-
.../object/economy/GlobalAccountObserver.java | 8 +-
5 files changed, 56 insertions(+), 58 deletions(-)
diff --git a/Towny/pom.xml b/Towny/pom.xml
index 120695d7f0..5422e16ec2 100644
--- a/Towny/pom.xml
+++ b/Towny/pom.xml
@@ -129,7 +129,7 @@
org.apache.logging.log4j
log4j-core
- 2.22.1
+ 2.19.0
provided
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/Towny.java b/Towny/src/main/java/com/palmergames/bukkit/towny/Towny.java
index 2da74fe65b..b0ebce86d7 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/Towny.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/Towny.java
@@ -234,7 +234,7 @@ public void loadFoundation(boolean reload) {
TownBlockTypeHandler.initialize();
// Initialize the special log4j hook logger.
- TownyLogger.getInstance();
+ TownyLogger.initialize();
// Clear all objects from the TownyUniverse class.
townyUniverse.clearAllObjects();
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
index 1b07819958..e2543518a1 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
@@ -1,13 +1,13 @@
package com.palmergames.bukkit.towny;
import com.palmergames.bukkit.towny.object.economy.Account;
+
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
-import org.apache.logging.log4j.core.config.AppenderRef;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.layout.PatternLayout;
@@ -18,26 +18,28 @@
/**
* @author Articdive
*/
-public class TownyLogger {
- private static final TownyLogger instance = new TownyLogger();
- private static final Logger LOGGER_MONEY = LogManager.getLogger("com.palmergames.bukkit.towny.money");
-
- @SuppressWarnings("deprecation") // Until Mojang updates their log4j included with minecraft we have to use the deprecated methods.
+public final class TownyLogger {
private TownyLogger() {
+
+ }
+
+ private static final Logger LOGGER_MONEY = LogManager.getLogger("com.palmergames.bukkit.towny.money");
+
+ public static void initialize() {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
// Get log location.
String logFolderName = TownyUniverse.getInstance().getRootFolder() + File.separator + "logs";
-
+
Appender townyMainAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "towny.log")
- .withName("Towny-Main-Log")
+ .setName("Towny-Main-Log")
.withAppend(TownySettings.isAppendingToLog())
- .withIgnoreExceptions(false)
- .withBufferedIo(false)
- .withBufferSize(0)
+ .setIgnoreExceptions(false)
+ .setBufferedIo(false)
+ .setBufferSize(0)
.setConfiguration(config)
- .withLayout(PatternLayout.newBuilder()
+ .setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
.withPattern("%d [%t]: %m%n")
.withConfiguration(config)
@@ -45,13 +47,13 @@ private TownyLogger() {
.build();
Appender townyMoneyAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "money.csv")
- .withName("Towny-Money")
+ .setName("Towny-Money")
.withAppend(TownySettings.isAppendingToLog())
- .withIgnoreExceptions(false)
- .withBufferedIo(false)
- .withBufferSize(0)
+ .setIgnoreExceptions(false)
+ .setBufferedIo(false)
+ .setBufferSize(0)
.setConfiguration(config)
- .withLayout(PatternLayout.newBuilder()
+ .setLayout(PatternLayout.newBuilder()
// The comma after the date is to seperate it in CSV, this is a really nice workaround
// And avoids having to use apache-csv to make it work with Log4J
.withCharset(StandardCharsets.UTF_8)
@@ -61,13 +63,13 @@ private TownyLogger() {
.build();
Appender townyDebugAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "debug.log")
- .withName("Towny-Debug")
+ .setName("Towny-Debug")
.withAppend(TownySettings.isAppendingToLog())
- .withIgnoreExceptions(false)
- .withBufferedIo(false)
- .withBufferSize(0)
+ .setIgnoreExceptions(false)
+ .setBufferedIo(false)
+ .setBufferSize(0)
.setConfiguration(config)
- .withLayout(PatternLayout.newBuilder()
+ .setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
.withPattern("%d [%t]: %m%n")
.withConfiguration(config)
@@ -75,87 +77,83 @@ private TownyLogger() {
.build();
Appender townyDatabaseAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "database.log")
- .withName("Towny-Database")
+ .setName("Towny-Database")
.withAppend(TownySettings.isAppendingToLog())
- .withIgnoreExceptions(false)
- .withBufferedIo(false)
- .withBufferSize(0)
+ .setIgnoreExceptions(false)
+ .setBufferedIo(false)
+ .setBufferSize(0)
.setConfiguration(config)
- .withLayout(PatternLayout.newBuilder()
+ .setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
.withPattern("%d [%t]: %m%n")
.withConfiguration(config)
.build())
.build();
-
+
townyMainAppender.start();
townyMoneyAppender.start();
townyDebugAppender.start();
townyDatabaseAppender.start();
-
+
// Towny Main
- LoggerConfig townyMainConfig = LoggerConfig.createLogger(true, Level.ALL, "Towny", null, new AppenderRef[0], null, config, null);
+ LoggerConfig townyMainConfig = LoggerConfig.newBuilder().withAdditivity(true).withLevel(Level.ALL).withLoggerName("Towny").withConfig(config).build();
townyMainConfig.addAppender(townyMainAppender, Level.ALL, null);
config.addLogger(Towny.class.getName(), townyMainConfig);
-
+
// Debug
- LoggerConfig townyDebugConfig = LoggerConfig.createLogger(TownySettings.getDebug(), Level.ALL, "Towny-Debug", null, new AppenderRef[0], null, config, null);
+ LoggerConfig townyDebugConfig = LoggerConfig.newBuilder().withAdditivity(TownySettings.getDebug()).withLevel(Level.ALL).withLoggerName("Towny-Debug").withConfig(config).build();
townyDebugConfig.addAppender(townyDebugAppender, Level.ALL, null);
config.addLogger("com.palmergames.bukkit.towny.debug", townyDebugConfig);
-
+
// Money
- LoggerConfig townyMoneyConfig = LoggerConfig.createLogger(false, Level.ALL, "Towny-Money", null, new AppenderRef[0], null, config, null);
+ LoggerConfig townyMoneyConfig = LoggerConfig.newBuilder().withAdditivity(false).withLevel(Level.ALL).withLoggerName("Towny-Money").withConfig(config).build();
townyMoneyConfig.addAppender(townyMoneyAppender, Level.ALL, null);
config.addLogger("com.palmergames.bukkit.towny.money", townyMoneyConfig);
-
+
// Database
- LoggerConfig townyDatabaseConfig = LoggerConfig.createLogger(false, Level.ALL, "Towny-Database", null, new AppenderRef[0], null, config, null);
+ LoggerConfig townyDatabaseConfig = LoggerConfig.newBuilder().withAdditivity(false).withLevel(Level.ALL).withLoggerName("Towny-Database").withConfig(config).build();
townyDatabaseConfig.addAppender(townyDatabaseAppender, Level.ALL, null);
-
+
ctx.updateLoggers();
}
-
- public void refreshDebugLogger() {
+
+ public static void refreshDebugLogger() {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
LoggerConfig townyDebugConfig = config.getLoggerConfig("com.palmergames.bukkit.towny.debug");
townyDebugConfig.setAdditive(TownySettings.getDebug());
ctx.updateLoggers();
}
-
- public void logMoneyTransaction(Account a, double amount, Account b, String reason) {
-
+
+ public static void logMoneyTransaction(Account a, double amount, Account b, String reason) {
+
String sender;
String receiver;
-
+
if (a == null) {
sender = "None";
} else {
sender = a.getName();
}
-
+
if (b == null) {
receiver = "None";
} else {
receiver = b.getName();
}
-
+
if (reason == null) {
LOGGER_MONEY.info(String.format("%s,%s,%s,%s", "Unknown Reason", sender, amount, receiver));
} else {
LOGGER_MONEY.info(String.format("%s,%s,%s,%s", reason, sender, amount, receiver));
}
}
-
- public void logMoneyTransaction(String a, double amount, String b, String reason) {
+
+ public static void logMoneyTransaction(String a, double amount, String b, String reason) {
if (reason == null) {
LOGGER_MONEY.info(String.format("%s,%s,%s,%s", "Unknown Reason", a, amount, b));
} else {
LOGGER_MONEY.info(String.format("%s,%s,%s,%s", reason, a, amount, b));
}
}
-
- public static TownyLogger getInstance() {
- return instance;
- }
}
\ No newline at end of file
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java
index 3fb70ddfb6..6b8e062b6a 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/command/TownyAdminCommand.java
@@ -2385,7 +2385,7 @@ private void adminToggleDevMode(CommandSender sender, Optional choice)
private void adminToggleDebug(CommandSender sender, Optional choice) throws NoPermissionException {
checkPermOrThrow(sender, PermissionNodes.TOWNY_COMMAND_TOWNYADMIN_TOGGLE_DEBUG.getNode());
TownySettings.setDebug(choice.orElse(!TownySettings.getDebug()));
- TownyLogger.getInstance().refreshDebugLogger();
+ TownyLogger.refreshDebugLogger();
TownyMessaging.sendMsg(sender, Translatable.of("msg_admin_toggle_debugmode", (TownySettings.getDebug() ? Translatable.literal(Colors.Green).append(Translatable.of("enabled")) : Translatable.literal(Colors.Red).append(Translatable.of("disabled"))))); }
private void adminToggleTownWithDraw(CommandSender sender, Optional choice) throws NoPermissionException {
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/object/economy/GlobalAccountObserver.java b/Towny/src/main/java/com/palmergames/bukkit/towny/object/economy/GlobalAccountObserver.java
index 45c08a840f..86aa0c8022 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/object/economy/GlobalAccountObserver.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/object/economy/GlobalAccountObserver.java
@@ -11,12 +11,12 @@
public final class GlobalAccountObserver implements AccountObserver {
@Override
- public final void withdrew(Account account, double amount, String reason) {
- TownyLogger.getInstance().logMoneyTransaction(account, amount, null, reason);
+ public void withdrew(Account account, double amount, String reason) {
+ TownyLogger.logMoneyTransaction(account, amount, null, reason);
}
@Override
- public final void deposited(Account account, double amount, String reason) {
- TownyLogger.getInstance().logMoneyTransaction(account, amount, null, reason);
+ public void deposited(Account account, double amount, String reason) {
+ TownyLogger.logMoneyTransaction(account, amount, null, reason);
}
}
From e5f2304e1fad3b622a7360ca7b188928a74f152a Mon Sep 17 00:00:00 2001
From: Articdive <13535885+Articdive@users.noreply.github.com>
Date: Sat, 16 Mar 2024 10:51:50 +0100
Subject: [PATCH 2/7] Fix towny loggers not working, attach debug to standard
logger.
---
.../palmergames/bukkit/towny/TownyLogger.java | 40 +++++++++++++------
.../bukkit/towny/TownyMessaging.java | 3 +-
2 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
index e2543518a1..45b2e47742 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
@@ -24,6 +24,8 @@ private TownyLogger() {
}
private static final Logger LOGGER_MONEY = LogManager.getLogger("com.palmergames.bukkit.towny.money");
+
+ private static Appender townyDebugAppender;
public static void initialize() {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
@@ -45,6 +47,7 @@ public static void initialize() {
.withConfiguration(config)
.build())
.build();
+
Appender townyMoneyAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "money.csv")
.setName("Towny-Money")
@@ -61,7 +64,8 @@ public static void initialize() {
.withConfiguration(config)
.build())
.build();
- Appender townyDebugAppender = FileAppender.newBuilder()
+
+ townyDebugAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "debug.log")
.setName("Towny-Debug")
.withAppend(TownySettings.isAppendingToLog())
@@ -71,10 +75,11 @@ public static void initialize() {
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
- .withPattern("%d [%t]: %m%n")
+ .withPattern("%d [%t] [%C#%M:%L]: %m%n")
.withConfiguration(config)
.build())
.build();
+
Appender townyDatabaseAppender = FileAppender.newBuilder()
.withFileName(logFolderName + File.separator + "database.log")
.setName("Towny-Database")
@@ -91,19 +96,18 @@ public static void initialize() {
.build();
townyMainAppender.start();
- townyMoneyAppender.start();
townyDebugAppender.start();
+ townyMoneyAppender.start();
townyDatabaseAppender.start();
// Towny Main
LoggerConfig townyMainConfig = LoggerConfig.newBuilder().withAdditivity(true).withLevel(Level.ALL).withLoggerName("Towny").withConfig(config).build();
- townyMainConfig.addAppender(townyMainAppender, Level.ALL, null);
- config.addLogger(Towny.class.getName(), townyMainConfig);
-
- // Debug
- LoggerConfig townyDebugConfig = LoggerConfig.newBuilder().withAdditivity(TownySettings.getDebug()).withLevel(Level.ALL).withLoggerName("Towny-Debug").withConfig(config).build();
- townyDebugConfig.addAppender(townyDebugAppender, Level.ALL, null);
- config.addLogger("com.palmergames.bukkit.towny.debug", townyDebugConfig);
+ townyMainConfig.addAppender(townyMainAppender, Level.INFO, null);
+ if (TownySettings.getDebug()) {
+ townyMainConfig.addAppender(townyDebugAppender, Level.DEBUG, null);
+ }
+ // Spigot/Paper decided to name the loggers with their plugin's simple name.
+ config.addLogger("Towny", townyMainConfig);
// Money
LoggerConfig townyMoneyConfig = LoggerConfig.newBuilder().withAdditivity(false).withLevel(Level.ALL).withLoggerName("Towny-Money").withConfig(config).build();
@@ -119,9 +123,19 @@ public static void initialize() {
public static void refreshDebugLogger() {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- Configuration config = ctx.getConfiguration();
- LoggerConfig townyDebugConfig = config.getLoggerConfig("com.palmergames.bukkit.towny.debug");
- townyDebugConfig.setAdditive(TownySettings.getDebug());
+ LoggerConfig loggerConfig = ctx.getConfiguration().getLoggerConfig("Towny");
+ Appender console = ctx.getConfiguration().getAppender("TerminalConsole");
+
+ if (TownySettings.getDebug()) {
+ // Make sure we don't add more appenders than necessary.
+ loggerConfig.removeAppender("Towny-Debug");
+ loggerConfig.removeAppender("TerminalConsole");
+ loggerConfig.addAppender(townyDebugAppender, Level.DEBUG, null);
+ loggerConfig.addAppender(console, Level.DEBUG, null);
+ } else {
+ loggerConfig.removeAppender("Towny-Debug");
+ loggerConfig.removeAppender("TerminalConsole");
+ }
ctx.updateLoggers();
}
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java
index 7e6aa11183..80d534ee48 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java
@@ -55,7 +55,6 @@
public class TownyMessaging {
private static final Logger LOGGER = LogManager.getLogger("Towny");
- private static final Logger LOGGER_DEBUG = LogManager.getLogger("com.palmergames.bukkit.towny.debug");
/*
* NON-TRANSLATABLE MESSAGING METHODS
@@ -180,7 +179,7 @@ public static void sendDevMsg(String[] msg) {
*/
public static void sendDebugMsg(String msg) {
if (TownySettings.getDebug()) {
- LOGGER_DEBUG.info(Colors.strip("[Towny] Debug: " + msg));
+ LOGGER.debug(Colors.strip("[Towny] Debug: " + msg));
}
sendDevMsg(msg);
}
From 643db8a5931742dc54a2714b30ef5a6928f08ef4 Mon Sep 17 00:00:00 2001
From: Articdive <13535885+Articdive@users.noreply.github.com>
Date: Sat, 16 Mar 2024 14:23:29 +0100
Subject: [PATCH 3/7] Back to Log4j 2.17.0 (1.16.5 & 1.17-compat)
---
Towny/pom.xml | 2 +-
.../palmergames/bukkit/towny/TownyLogger.java | 23 ++++++++++---------
2 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/Towny/pom.xml b/Towny/pom.xml
index e228a262cc..8760634ca4 100644
--- a/Towny/pom.xml
+++ b/Towny/pom.xml
@@ -129,7 +129,7 @@
org.apache.logging.log4j
log4j-core
- 2.19.0
+ 2.17.0
provided
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
index 45b2e47742..5e09872f21 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
@@ -8,6 +8,7 @@
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
+import org.apache.logging.log4j.core.config.AppenderRef;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import org.apache.logging.log4j.core.layout.PatternLayout;
@@ -38,8 +39,8 @@ public static void initialize() {
.setName("Towny-Main-Log")
.withAppend(TownySettings.isAppendingToLog())
.setIgnoreExceptions(false)
- .setBufferedIo(false)
- .setBufferSize(0)
+ .withBufferedIo(false)
+ .withBufferSize(0)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
@@ -53,8 +54,8 @@ public static void initialize() {
.setName("Towny-Money")
.withAppend(TownySettings.isAppendingToLog())
.setIgnoreExceptions(false)
- .setBufferedIo(false)
- .setBufferSize(0)
+ .withBufferedIo(false)
+ .withBufferSize(0)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
// The comma after the date is to seperate it in CSV, this is a really nice workaround
@@ -70,8 +71,8 @@ public static void initialize() {
.setName("Towny-Debug")
.withAppend(TownySettings.isAppendingToLog())
.setIgnoreExceptions(false)
- .setBufferedIo(false)
- .setBufferSize(0)
+ .withBufferedIo(false)
+ .withBufferSize(0)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
@@ -85,8 +86,8 @@ public static void initialize() {
.setName("Towny-Database")
.withAppend(TownySettings.isAppendingToLog())
.setIgnoreExceptions(false)
- .setBufferedIo(false)
- .setBufferSize(0)
+ .withBufferedIo(false)
+ .withBufferSize(0)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
@@ -101,7 +102,7 @@ public static void initialize() {
townyDatabaseAppender.start();
// Towny Main
- LoggerConfig townyMainConfig = LoggerConfig.newBuilder().withAdditivity(true).withLevel(Level.ALL).withLoggerName("Towny").withConfig(config).build();
+ LoggerConfig townyMainConfig = LoggerConfig.createLogger(true, Level.ALL, "Towny", null, new AppenderRef[0], null, config, null);
townyMainConfig.addAppender(townyMainAppender, Level.INFO, null);
if (TownySettings.getDebug()) {
townyMainConfig.addAppender(townyDebugAppender, Level.DEBUG, null);
@@ -110,12 +111,12 @@ public static void initialize() {
config.addLogger("Towny", townyMainConfig);
// Money
- LoggerConfig townyMoneyConfig = LoggerConfig.newBuilder().withAdditivity(false).withLevel(Level.ALL).withLoggerName("Towny-Money").withConfig(config).build();
+ LoggerConfig townyMoneyConfig = LoggerConfig.createLogger(false, Level.ALL, "Towny-Money", null, new AppenderRef[0], null, config, null);
townyMoneyConfig.addAppender(townyMoneyAppender, Level.ALL, null);
config.addLogger("com.palmergames.bukkit.towny.money", townyMoneyConfig);
// Database
- LoggerConfig townyDatabaseConfig = LoggerConfig.newBuilder().withAdditivity(false).withLevel(Level.ALL).withLoggerName("Towny-Database").withConfig(config).build();
+ LoggerConfig townyDatabaseConfig = LoggerConfig.createLogger(false, Level.ALL, "Towny-Database", null, new AppenderRef[0], null, config, null);
townyDatabaseConfig.addAppender(townyDatabaseAppender, Level.ALL, null);
ctx.updateLoggers();
From 5e772d5a4d76e322a87ffd959065c7770bc0b692 Mon Sep 17 00:00:00 2001
From: Articdive <13535885+Articdive@users.noreply.github.com>
Date: Thu, 28 Mar 2024 12:36:02 +0100
Subject: [PATCH 4/7] Remove Class, Method and Line Number in debug logging.
---
.../src/main/java/com/palmergames/bukkit/towny/TownyLogger.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
index 5e09872f21..bc079fb306 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
@@ -76,7 +76,7 @@ public static void initialize() {
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
- .withPattern("%d [%t] [%C#%M:%L]: %m%n")
+ .withPattern("%d [%t]: %m%n")
.withConfiguration(config)
.build())
.build();
From efcf867c1fb1808cbeef6568af8b59170c8b666f Mon Sep 17 00:00:00 2001
From: Articdive <13535885+Articdive@users.noreply.github.com>
Date: Fri, 29 Mar 2024 16:15:01 +0100
Subject: [PATCH 5/7] Last tweaks to the loggers.
---
.../palmergames/bukkit/towny/TownyLogger.java | 25 +++++++++++++------
.../bukkit/towny/TownyMessaging.java | 5 ++--
2 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
index bc079fb306..85795e13c7 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
@@ -6,11 +6,14 @@
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
import org.apache.logging.log4j.core.config.AppenderRef;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.core.filter.CompositeFilter;
+import org.apache.logging.log4j.core.filter.LevelMatchFilter;
import org.apache.logging.log4j.core.layout.PatternLayout;
import java.io.File;
@@ -41,10 +44,11 @@ public static void initialize() {
.setIgnoreExceptions(false)
.withBufferedIo(false)
.withBufferSize(0)
+ .withLocking(false)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
- .withPattern("%d [%t]: %m%n")
+ .withPattern("%d{dd MMM yyyy HH:mm:ss} [%t]: %m%n")
.withConfiguration(config)
.build())
.build();
@@ -56,6 +60,7 @@ public static void initialize() {
.setIgnoreExceptions(false)
.withBufferedIo(false)
.withBufferSize(0)
+ .withLocking(false)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
// The comma after the date is to seperate it in CSV, this is a really nice workaround
@@ -73,10 +78,11 @@ public static void initialize() {
.setIgnoreExceptions(false)
.withBufferedIo(false)
.withBufferSize(0)
+ .withLocking(false)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
- .withPattern("%d [%t]: %m%n")
+ .withPattern("%d{dd MMM yyyy HH:mm:ss} [%t]: %m%n")
.withConfiguration(config)
.build())
.build();
@@ -88,10 +94,11 @@ public static void initialize() {
.setIgnoreExceptions(false)
.withBufferedIo(false)
.withBufferSize(0)
+ .withLocking(false)
.setConfiguration(config)
.setLayout(PatternLayout.newBuilder()
.withCharset(StandardCharsets.UTF_8)
- .withPattern("%d [%t]: %m%n")
+ .withPattern("%d{dd MMM yyyy HH:mm:ss} [%t]: %m%n")
.withConfiguration(config)
.build())
.build();
@@ -104,9 +111,6 @@ public static void initialize() {
// Towny Main
LoggerConfig townyMainConfig = LoggerConfig.createLogger(true, Level.ALL, "Towny", null, new AppenderRef[0], null, config, null);
townyMainConfig.addAppender(townyMainAppender, Level.INFO, null);
- if (TownySettings.getDebug()) {
- townyMainConfig.addAppender(townyDebugAppender, Level.DEBUG, null);
- }
// Spigot/Paper decided to name the loggers with their plugin's simple name.
config.addLogger("Towny", townyMainConfig);
@@ -120,6 +124,7 @@ public static void initialize() {
townyDatabaseConfig.addAppender(townyDatabaseAppender, Level.ALL, null);
ctx.updateLoggers();
+ refreshDebugLogger();
}
public static void refreshDebugLogger() {
@@ -132,7 +137,13 @@ public static void refreshDebugLogger() {
loggerConfig.removeAppender("Towny-Debug");
loggerConfig.removeAppender("TerminalConsole");
loggerConfig.addAppender(townyDebugAppender, Level.DEBUG, null);
- loggerConfig.addAppender(console, Level.DEBUG, null);
+ // only accept debug and trace messages for the debug console.
+ loggerConfig.addAppender(console, Level.DEBUG, CompositeFilter.createFilters(
+ new Filter[]{
+ LevelMatchFilter.newBuilder().setLevel(Level.DEBUG).setOnMatch(Filter.Result.ACCEPT).setOnMismatch(Filter.Result.DENY).build(),
+ LevelMatchFilter.newBuilder().setLevel(Level.TRACE).setOnMatch(Filter.Result.ACCEPT).setOnMismatch(Filter.Result.DENY).build()
+ }
+ ));
} else {
loggerConfig.removeAppender("Towny-Debug");
loggerConfig.removeAppender("TerminalConsole");
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java
index 80d534ee48..bf1800e4cd 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyMessaging.java
@@ -172,14 +172,13 @@ public static void sendDevMsg(String[] msg) {
}
/**
- * Sends a message to the log and console
- * prefixed by [Towny] Debug:
+ * Sends a message to the debug logger (and hence the console and debug.log)
*
* @param msg the message to be sent
*/
public static void sendDebugMsg(String msg) {
if (TownySettings.getDebug()) {
- LOGGER.debug(Colors.strip("[Towny] Debug: " + msg));
+ LOGGER.debug(Colors.strip(msg));
}
sendDevMsg(msg);
}
From a85cf6a4b4b703967fd19a589ccc52468836146e Mon Sep 17 00:00:00 2001
From: Articdive <13535885+Articdive@users.noreply.github.com>
Date: Fri, 29 Mar 2024 16:50:33 +0100
Subject: [PATCH 6/7] Update log4j2 version. Update database logger.
---
Towny/pom.xml | 2 +-
.../palmergames/bukkit/towny/TownyLogger.java | 1 +
.../bukkit/towny/db/TownyDatabaseHandler.java | 7 +++----
.../bukkit/towny/db/TownyFlatFileSource.java | 12 ++++++++----
.../bukkit/towny/db/TownySQLSource.java | 16 ++++++++++------
5 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/Towny/pom.xml b/Towny/pom.xml
index 8760634ca4..e6dc79f42a 100644
--- a/Towny/pom.xml
+++ b/Towny/pom.xml
@@ -129,7 +129,7 @@
org.apache.logging.log4j
log4j-core
- 2.17.0
+ 2.23.1
provided
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
index 85795e13c7..f07b1b0658 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/TownyLogger.java
@@ -31,6 +31,7 @@ private TownyLogger() {
private static Appender townyDebugAppender;
+ @SuppressWarnings("deprecation")
public static void initialize() {
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyDatabaseHandler.java b/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyDatabaseHandler.java
index 10df15acc8..556ea0e5e1 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyDatabaseHandler.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyDatabaseHandler.java
@@ -87,14 +87,13 @@
* @author ElgarL
*/
public abstract class TownyDatabaseHandler extends TownyDataSource {
+ private static final Logger LOGGER_DATABASE = LogManager.getLogger("Towny-Database");
public static final SimpleDateFormat BACKUP_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH_mm_ssZ");
final String rootFolderPath;
final String dataFolderPath;
final String settingsFolderPath;
final String logFolderPath;
final String backupFolderPath;
-
- Logger logger = LogManager.getLogger(TownyDatabaseHandler.class);
protected final Queue queryQueue = new ConcurrentLinkedQueue<>();
private final ScheduledTask task;
@@ -343,13 +342,13 @@ public void removeTownBlock(TownBlock townBlock) {
Town town = townBlock.getTownOrNull();
if (town == null)
// Log as error because TownBlocks *must* have a town.
- logger.error(String.format("The TownBlock at (%s, %d, %d) is not registered to a town.", townBlock.getWorld().getName(), townBlock.getX(), townBlock.getZ()));
+ LOGGER_DATABASE.error(String.format("The TownBlock at (%s, %d, %d) is not registered to a town.", townBlock.getWorld().getName(), townBlock.getX(), townBlock.getZ()));
TownPreUnclaimEvent event = new TownPreUnclaimEvent(town, townBlock);
if (BukkitTools.isEventCancelled(event)) {
// Log as Warn because the event has been processed
if (!event.getCancelMessage().isEmpty())
- logger.warn(event.getCancelMessage());
+ LOGGER_DATABASE.warn(event.getCancelMessage());
return;
}
diff --git a/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyFlatFileSource.java b/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyFlatFileSource.java
index eb2e2de6ad..5a5b698b55 100644
--- a/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyFlatFileSource.java
+++ b/Towny/src/main/java/com/palmergames/bukkit/towny/db/TownyFlatFileSource.java
@@ -34,6 +34,9 @@
import com.palmergames.bukkit.util.BukkitTools;
import com.palmergames.util.FileMgmt;
import com.palmergames.util.StringMgmt;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.bukkit.Bukkit;
import org.bukkit.World;
import java.io.BufferedReader;
@@ -60,6 +63,7 @@
import java.util.stream.Collectors;
public final class TownyFlatFileSource extends TownyDatabaseHandler {
+ private static final Logger LOGGER_DATABASE = LogManager.getLogger("Towny-Database");
private final String newLine = System.lineSeparator();
@@ -2101,7 +2105,7 @@ public boolean savePlotGroup(PlotGroup group) {
list.add("town=" + group.getTown().getName());
list.add("metadata=" + serializeMetadata(group));
} catch (Exception e) {
- logger.warn("An exception occurred while saving plot group " + Optional.ofNullable(group).map(g -> g.getUUID().toString()).orElse("null") + ": ", e);
+ LOGGER_DATABASE.warn("An exception occurred while saving plot group " + Optional.ofNullable(group).map(g -> g.getUUID().toString()).orElse("null") + ": ", e);
}
// Save file
@@ -2529,14 +2533,14 @@ public boolean loadCooldowns() {
try {
data = new String(Files.readAllBytes(cooldownsFile), StandardCharsets.UTF_8);
} catch (IOException e) {
- logger.warn("An exception occurred when reading cooldowns.json", e);
+ LOGGER_DATABASE.warn("An exception occurred when reading cooldowns.json", e);
return true;
}
try {
CooldownTimerTask.getCooldowns().putAll(new Gson().fromJson(data, new TypeToken