⬆️ Update log4j to latest version
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 5 Dec 2025 15:43:38 +0000 (16:43 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 5 Dec 2025 15:43:38 +0000 (16:43 +0100)
14 files changed:
build.gradle
src/main/java/net/pterodactylus/rhynodge/actions/EmailAction.java
src/main/java/net/pterodactylus/rhynodge/engine/Engine.java
src/main/java/net/pterodactylus/rhynodge/engine/ReactionRunner.java
src/main/java/net/pterodactylus/rhynodge/engine/Starter.java
src/main/java/net/pterodactylus/rhynodge/filters/EpisodeFilter.java
src/main/java/net/pterodactylus/rhynodge/filters/HtmlFilter.java
src/main/java/net/pterodactylus/rhynodge/loader/ChainWatcher.java
src/main/java/net/pterodactylus/rhynodge/states/StateManager.java
src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyMerger.kt
src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.kt
src/test/java/net/pterodactylus/rhynodge/states/StateManagerTest.java
src/test/kotlin/net/pterodactylus/util/test/DisableLog4jLogging.kt
src/test/kotlin/net/pterodactylus/util/test/DisableLog4jLoggingTest.kt

index 73e9b31..965087d 100644 (file)
@@ -45,7 +45,7 @@ repositories {
 }
 
 dependencies {
-    implementation group: "log4j", name: "log4j", version: "1.2.17"
+    implementation group: "org.apache.logging.log4j", name: "log4j-core", version: "2.25.2"
     implementation group: "org.apache.httpcomponents", name: "httpclient", version: "4.4"
     implementation group: "org.jsoup", name: "jsoup", version: "1.16.1"
     implementation group: "javax.mail", name: "mail", version: "1.4.6-rc1"
index d27b8a9..945b909 100644 (file)
@@ -38,7 +38,8 @@ import net.pterodactylus.rhynodge.output.Output;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.sun.mail.smtp.SMTPTransport;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * {@link Action} implementation that sends an email containing the triggering
@@ -48,7 +49,7 @@ import org.apache.log4j.Logger;
  */
 public class EmailAction implements Action {
 
-       private static final Logger logger = Logger.getLogger(EmailAction.class);
+       private static final Logger logger = LogManager.getLogger(EmailAction.class);
 
        /** The email address of the sender. */
        private final String sender;
index 963997b..4176637 100644 (file)
@@ -27,11 +27,12 @@ import net.pterodactylus.rhynodge.Action;
 import net.pterodactylus.rhynodge.Reaction;
 import net.pterodactylus.rhynodge.actions.EmailAction;
 import net.pterodactylus.rhynodge.states.StateManager;
-import org.apache.log4j.Logger;
 
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.*;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import static java.lang.System.currentTimeMillis;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
@@ -106,6 +107,6 @@ public class Engine {
                scheduledFutures.remove(name).cancel(true);
        }
 
-       private static final Logger logger = Logger.getLogger(Engine.class);
+       private static final Logger logger = LogManager.getLogger(Engine.class);
 
 }
index 644ccae..bff7a33 100644 (file)
@@ -3,7 +3,7 @@ package net.pterodactylus.rhynodge.engine;
 import static java.lang.String.format;
 import static java.util.Optional.ofNullable;
 import static net.pterodactylus.rhynodge.states.FailedState.INSTANCE;
-import static org.apache.log4j.Logger.getLogger;
+import static org.apache.logging.log4j.LogManager.getLogger;
 
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -19,8 +19,7 @@ import net.pterodactylus.rhynodge.Merger;
 import net.pterodactylus.rhynodge.output.DefaultOutput;
 import net.pterodactylus.rhynodge.output.Output;
 import net.pterodactylus.rhynodge.states.FailedState;
-
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Runs a {@link Reaction}, starting with its {@link Query}, running the {@link
index ce84b5e..3927ced 100644 (file)
@@ -25,7 +25,8 @@ import net.pterodactylus.util.inject.ObjectBinding;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Rhynodge main starter class.
@@ -54,6 +55,6 @@ public class Starter {
                chainWatcher.startAsync().awaitTerminated();
        }
 
-       private static final Logger logger = Logger.getLogger(Starter.class);
+       private static final Logger logger = LogManager.getLogger(Starter.class);
 
 }
index e97307e..901d470 100644 (file)
@@ -40,7 +40,8 @@ import net.pterodactylus.rhynodge.states.FailedState;
 import net.pterodactylus.rhynodge.states.TorrentState;
 import net.pterodactylus.rhynodge.states.TorrentState.TorrentFile;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.jspecify.annotations.NonNull;
 
 import static net.pterodactylus.rhynodge.utils.Preconditions.checkState;
@@ -53,7 +54,7 @@ import static net.pterodactylus.rhynodge.utils.Preconditions.checkState;
  */
 public class EpisodeFilter implements Filter {
 
-       private static final Logger logger = Logger.getLogger(EpisodeFilter.class);
+       private static final Logger logger = LogManager.getLogger(EpisodeFilter.class);
 
        /** The pattern to parse episode information from the filename. */
        private static final Collection<Pattern> episodePatterns = asList(Pattern.compile("[Ss](\\d{2})[Ee](\\d{2})"), Pattern.compile("[^\\d](\\d{1,2})x(\\d{2})[^\\d]"));
index 9a9dc5d..cae172b 100644 (file)
@@ -23,7 +23,8 @@ import net.pterodactylus.rhynodge.states.FailedState;
 import net.pterodactylus.rhynodge.states.HtmlState;
 import net.pterodactylus.rhynodge.states.HttpState;
 
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jspecify.annotations.NonNull;
@@ -37,7 +38,7 @@ import static net.pterodactylus.rhynodge.utils.Preconditions.checkState;
  */
 public class HtmlFilter implements Filter {
 
-       private static final Logger logger = Logger.getLogger(HtmlFilter.class);
+       private static final Logger logger = LogManager.getLogger(HtmlFilter.class);
 
        /**
         * {@inheritDoc}
index 0bbb299..816243a 100644 (file)
@@ -35,13 +35,13 @@ import net.pterodactylus.rhynodge.engine.Engine;
 import net.pterodactylus.rhynodge.loader.Chain.Parameter;
 import net.pterodactylus.rhynodge.loader.Chain.Part;
 
-import org.apache.log4j.Logger;
-
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.util.concurrent.AbstractExecutionThreadService;
 import com.google.common.util.concurrent.Uninterruptibles;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import static java.util.stream.Collectors.toMap;
 
@@ -55,7 +55,7 @@ import static java.util.stream.Collectors.toMap;
 public class ChainWatcher extends AbstractExecutionThreadService {
 
        /** The logger. */
-       private static final Logger logger = Logger.getLogger(ChainWatcher.class);
+       private static final Logger logger = LogManager.getLogger(ChainWatcher.class);
 
        /** The JSON object mapper. */
        private static final ObjectMapper objectMapper = new ObjectMapper();
index 9b46feb..6db1ebb 100644 (file)
@@ -32,12 +32,12 @@ import jakarta.inject.Singleton;
 
 import net.pterodactylus.rhynodge.State;
 
-import org.apache.log4j.Logger;
-
 import com.fasterxml.jackson.core.JsonGenerationException;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Loads and saves {@link State}s.
@@ -48,7 +48,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 public class StateManager {
 
        /** The logger. */
-       private static final Logger logger = Logger.getLogger(StateManager.class);
+       private static final Logger logger = LogManager.getLogger(StateManager.class);
 
        /** Jackson object mapper. */
        private final ObjectMapper objectMapper = new ObjectMapper();
index 644729f..24da795 100644 (file)
@@ -2,7 +2,8 @@ package net.pterodactylus.rhynodge.filters.webpages.savoy
 
 import net.pterodactylus.rhynodge.Merger
 import net.pterodactylus.rhynodge.State
-import org.apache.log4j.Logger
+import org.apache.logging.log4j.LogManager.getLogger
+import org.apache.logging.log4j.Logger
 
 class SavoyMerger : Merger {
 
@@ -26,4 +27,4 @@ class SavoyMerger : Merger {
 
 }
 
-private val logger = Logger.getLogger(SavoyMerger::class.java)
+private val logger: Logger = getLogger(SavoyMerger::class.java)
index 14f1952..b5e26c3 100644 (file)
@@ -3,7 +3,8 @@ package net.pterodactylus.rhynodge.filters.webpages.savoy
 import net.pterodactylus.rhynodge.Filter
 import net.pterodactylus.rhynodge.State
 import net.pterodactylus.rhynodge.states.JsonState
-import org.apache.log4j.Logger
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
 
 /**
  * [Filter] implementation that creates a list of movies running at the
@@ -20,5 +21,5 @@ class SavoyTicketsFilter : Filter {
 
 }
 
-private val logger = Logger.getLogger(SavoyTicketsFilter::class.java)
+private val logger: Logger = LogManager.getLogger(SavoyTicketsFilter::class.java)
 private val movieExtractor = MovieExtractor()
index cd235eb..0e6173c 100644 (file)
@@ -9,6 +9,7 @@ import net.pterodactylus.rhynodge.State;
 import net.pterodactylus.rhynodge.states.StateManager.StateDirectory;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.logging.log4j.core.config.Configurator;
 import org.hamcrest.Matchers;
 import org.jspecify.annotations.NonNull;
 import org.junit.jupiter.api.BeforeAll;
@@ -17,8 +18,8 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 
 import static java.util.Arrays.asList;
-import static org.apache.log4j.Level.OFF;
-import static org.apache.log4j.Logger.getLogger;
+import static org.apache.logging.log4j.Level.OFF;
+import static org.apache.logging.log4j.LogManager.getLogger;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.is;
 
@@ -34,7 +35,7 @@ public class StateManagerTest {
 
        @BeforeAll
        public static void deactivateLogging() {
-               getLogger(StateManager.class).setLevel(OFF);
+               Configurator.setLevel(getLogger(StateManager.class), OFF);
        }
 
        @BeforeEach
index 1858e3a..e2519f3 100644 (file)
@@ -1,7 +1,10 @@
 package net.pterodactylus.util.test
 
-import org.apache.log4j.Level
-import org.apache.log4j.Logger
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
+import org.apache.logging.log4j.core.config.Configurator
+import org.apache.logging.log4j.spi.LoggerContext
 import org.junit.jupiter.api.extension.AfterEachCallback
 import org.junit.jupiter.api.extension.BeforeEachCallback
 import org.junit.jupiter.api.extension.ExtendWith
@@ -22,14 +25,14 @@ class DisableLog4jLoggingExtension : BeforeEachCallback, AfterEachCallback {
 
        override fun beforeEach(context: ExtensionContext?) {
                oldLevel = rootLogger.level
-               rootLogger.level = Level.OFF
+               Configurator.setLevel(rootLogger, Level.OFF)
        }
 
        override fun afterEach(context: ExtensionContext?) {
-               rootLogger.level = oldLevel
+               Configurator.setLevel(rootLogger, oldLevel)
        }
 
-       private val rootLogger = Logger.getRootLogger()
+       private val rootLogger = LogManager.getRootLogger()
        private var oldLevel: Level? = null
 
 }
index b8999a0..c16f244 100644 (file)
@@ -1,7 +1,8 @@
 package net.pterodactylus.util.test
 
-import org.apache.log4j.Level
-import org.apache.log4j.Logger
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.core.config.Configurator
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.equalTo
 import org.junit.jupiter.api.Test
@@ -10,20 +11,20 @@ class DisableLog4jLoggingTest {
 
        @Test
        fun `extension disables logging on root logger`() {
-               rootLogger.level = Level.ALL
+               Configurator.setLevel(rootLogger, Level.ALL)
                extension.beforeEach(null)
                assertThat(rootLogger.level, equalTo(Level.OFF))
        }
 
        @Test
        fun `extension restores level of root logger after test`() {
-               rootLogger.level = object : Level(123, "test", 7) {}
+               Configurator.setLevel(rootLogger, Level.forName("test", 123))
                extension.beforeEach(null)
                extension.afterEach(null)
-               assertThat(rootLogger.level.toInt(), equalTo(123))
+               assertThat(rootLogger.level.intLevel(), equalTo(123))
        }
 
-       private val rootLogger = Logger.getRootLogger()
+       private val rootLogger = LogManager.getRootLogger()
        private val extension = DisableLog4jLoggingExtension()
 
 }