This is an automated email from the ASF dual-hosted git repository.

mattsicker pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/main by this push:
     new a42332d0bc Remove deprecated code
a42332d0bc is described below

commit a42332d0bc48996c2bb70286541269eb20d58024
Author: Matt Sicker <[email protected]>
AuthorDate: Fri Nov 10 17:29:27 2023 -0600

    Remove deprecated code
    
    Signed-off-by: Matt Sicker <[email protected]>
---
 .../src/main/java/org/apache/log4j/LogManager.java |  26 +----
 .../junit/LogManagerLoggerContextFactoryRule.java  |  52 ---------
 .../logging/log4j/test/junit/StatusLoggerRule.java |  51 ---------
 .../log4j/test/junit/ThreadContextMapRule.java     |  40 -------
 .../apache/logging/log4j/spi/AbstractLogger.java   |   2 +-
 .../org/apache/logging/log4j/util/Constants.java   |  12 ---
 .../logging/log4j/cassandra/CassandraAppender.java |   2 +-
 .../logging/log4j/cassandra/CassandraManager.java  |  17 +--
 .../test/junit/URLStreamHandlerFactoryRule.java    | 100 ------------------
 .../core/appender/MemoryMappedFileManagerTest.java |   4 +-
 .../appender/db/AbstractDatabaseAppenderTest.java  |   2 +-
 .../appender/db/AbstractDatabaseManagerTest.java   |   2 +-
 .../log4j/core/config/CustomConfigurationTest.java |  10 +-
 .../log4j/core/config/JiraLog4j2_2134Test.java     |  20 +++-
 .../log4j/core/config/LoggerConfigTest.java        |   9 +-
 .../core/filter/ThreadContextMapFilterTest.java    |  18 +++-
 .../log4j/core/layout/PatternSelectorTest.java     |  19 ++--
 .../log4j/core/appender/AbstractAppender.java      |  29 -----
 .../core/appender/MemoryMappedFileAppender.java    |   8 +-
 .../core/appender/MemoryMappedFileManager.java     |  39 +++----
 .../log4j/core/appender/OutputStreamManager.java   |  18 +---
 .../core/appender/RandomAccessFileManager.java     |  19 ----
 .../log4j/core/appender/SyslogAppender.java        |   8 --
 .../core/appender/db/AbstractDatabaseManager.java  |  37 -------
 .../core/appender/nosql/NoSqlDatabaseManager.java  |  14 ---
 .../rolling/RollingRandomAccessFileManager.java    |  19 ----
 .../appender/rolling/action/GzCompressAction.java  |  27 -----
 .../appender/rolling/action/IfLastModified.java    |  12 ---
 .../log4j/core/async/AsyncLoggerConfig.java        |  82 ---------------
 .../log4j/core/async/RingBufferLogEvent.java       |   2 +-
 .../log4j/core/config/AbstractConfiguration.java   |  28 -----
 .../logging/log4j/core/config/LoggerConfig.java    |  44 +-------
 .../log4j/core/filter/DynamicThresholdFilter.java  |  24 -----
 .../log4j/core/filter/ThreadContextMapFilter.java  |  16 +--
 .../logging/log4j/core/filter/TimeFilter.java      |  27 -----
 .../log4j/core/impl/ThreadContextDataInjector.java |   9 --
 .../log4j/core/layout/AbstractStringLayout.java    |   4 +-
 .../core/layout/ByteBufferDestinationHelper.java   |  61 -----------
 .../log4j/core/layout/LevelPatternSelector.java    |  58 ++--------
 .../log4j/core/layout/TextEncoderHelper.java       |  27 -----
 .../org/apache/logging/log4j/core/util/Source.java |  12 ---
 .../logging/log4j/core/util/StringEncoder.java     | 117 ---------------------
 .../logging/log4j/core/util/WatchManager.java      |  19 ----
 .../log4j/gctests/GcFreeLoggingTestUtil.java       |   2 +-
 .../logging/log4j/smtp/appender/SmtpManager.java   |  12 ---
 .../appender/PoolingDriverConnectionSource.java    |  12 ---
 .../logging/log4j/jdbc/appender/JdbcAppender.java  |   2 +-
 .../log4j/jdbc/appender/JdbcDatabaseManager.java   |  16 +--
 .../logging/log4j/jpa/appender/JpaAppender.java    |   6 +-
 .../log4j/jpa/appender/JpaDatabaseManager.java     |  17 +--
 .../log4j/jpa/appender/JpaHsqldbAppenderTest.java  |  16 +--
 .../layout/template/json/JsonTemplateLayout.java   |   6 +-
 .../logging/log4j/smtp/appender/SmtpManager.java   |  15 +--
 .../java/org/apache/logging/slf4j/SLF4JLogger.java |   2 +-
 .../log4j/web/ServletRequestThreadContext.java     |  46 --------
 55 files changed, 156 insertions(+), 1142 deletions(-)

diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/LogManager.java 
b/log4j-1.2-api/src/main/java/org/apache/log4j/LogManager.java
index db5a8af4af..4561c4b14b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/LogManager.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/LogManager.java
@@ -36,31 +36,7 @@ import org.apache.logging.log4j.util.StackLocatorUtil;
  */
 public final class LogManager {
 
-    /**
-     * @deprecated This variable is for internal use only. It will become 
package protected in future versions.
-     */
-    @Deprecated
-    public static final String DEFAULT_CONFIGURATION_FILE = "log4j.properties";
-
-    /**
-     * @deprecated This variable is for internal use only. It will become 
private in future versions.
-     */
-    @Deprecated
-    public static final String DEFAULT_CONFIGURATION_KEY = 
"log4j.configuration";
-
-    /**
-     * @deprecated This variable is for internal use only. It will become 
private in future versions.
-     */
-    @Deprecated
-    public static final String CONFIGURATOR_CLASS_KEY = 
"log4j.configuratorClass";
-
-    /**
-     * @deprecated This variable is for internal use only. It will become 
private in future versions.
-     */
-    @Deprecated
-    public static final String DEFAULT_INIT_OVERRIDE_KEY = 
"log4j.defaultInitOverride";
-
-    static final String DEFAULT_XML_CONFIGURATION_FILE = "log4j.xml";
+    static final String DEFAULT_CONFIGURATION_FILE = "log4j.properties";
 
     static private RepositorySelector repositorySelector;
 
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/LogManagerLoggerContextFactoryRule.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/LogManagerLoggerContextFactoryRule.java
deleted file mode 100644
index c11f476748..0000000000
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/LogManagerLoggerContextFactoryRule.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.test.junit;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.spi.LoggerContextFactory;
-import org.junit.rules.ExternalResource;
-
-/**
- * Sets the {@link LogManager}'s {@link LoggerContextFactory} to the given 
instance before the test and restores it to
- * the original value after the test.
- *
- * @deprecated Use {@link LoggerContextFactoryExtension} with JUnit 5
- */
-@Deprecated
-public class LogManagerLoggerContextFactoryRule extends ExternalResource {
-
-    private final LoggerContextFactory loggerContextFactory;
-
-    private LoggerContextFactory restoreLoggerContextFactory;
-
-    public LogManagerLoggerContextFactoryRule(final LoggerContextFactory 
loggerContextFactory) {
-        super();
-        this.loggerContextFactory = loggerContextFactory;
-    }
-
-    @Override
-    protected void after() {
-        LogManager.setFactory(this.restoreLoggerContextFactory);
-    }
-
-    @Override
-    protected void before() throws Throwable {
-        this.restoreLoggerContextFactory = LogManager.getFactory();
-        LogManager.setFactory(this.loggerContextFactory);
-    }
-
-}
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerRule.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerRule.java
deleted file mode 100644
index 2e808adca1..0000000000
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/StatusLoggerRule.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.test.junit;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.status.StatusLogger;
-import org.junit.rules.ExternalResource;
-
-/**
- * JUnit rule to set a particular StatusLogger level. This rule is useful for 
debugging unit tests that do not use a
- * Log4j configuration file.
- *
- * @since 2.8
- * @deprecated Use {@link StatusLoggerLevel} with JUnit 5
- */
-@Deprecated
-public class StatusLoggerRule extends ExternalResource {
-
-    private final StatusLogger statusLogger = StatusLogger.getLogger();
-    private final Level level;
-    private Level oldLevel;
-
-    public StatusLoggerRule(final Level level) {
-        this.level = level;
-    }
-
-    @Override
-    protected void before() throws Throwable {
-        oldLevel = statusLogger.getLevel();
-        statusLogger.setLevel(level);
-    }
-
-    @Override
-    protected void after() {
-        statusLogger.setLevel(oldLevel);
-    }
-}
diff --git 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextMapRule.java
 
b/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextMapRule.java
deleted file mode 100644
index 94986a26e6..0000000000
--- 
a/log4j-api-test/src/main/java/org/apache/logging/log4j/test/junit/ThreadContextMapRule.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.test.junit;
-
-/**
- * Restores the ThreadContext to it's initial map values after a JUnit test.
- *
- * Usage:
- *
- * <pre>
- * &#64;Rule
- * public final ThreadContextMapRule threadContextRule = new 
ThreadContextMapRule();
- * </pre>
- *
- * @deprecated use {@link UsingThreadContextMap} with JUnit 5
- */
-@Deprecated
-public class ThreadContextMapRule extends ThreadContextRule {
-
-    /**
-     * Constructs an initialized instance.
-     */
-    public ThreadContextMapRule() {
-        super(true, false);
-    }
-}
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
index 7f270f3b64..fd1b975c24 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
@@ -2763,7 +2763,7 @@ public abstract class AbstractLogger implements 
ExtendedLogger {
      * @since 2.20.0
      */
     protected LogBuilder getLogBuilder(final Level level) {
-        if (Constants.ENABLE_THREADLOCALS) {
+        if (Constants.isThreadLocalsEnabled()) {
             final DefaultLogBuilder builder = logBuilder.get();
             if (!builder.isInUse()) {
                 return builder.reset(this, level);
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java
index d399d64fc6..9c8b7b07da 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java
@@ -48,12 +48,6 @@ public final class Constants {
         isWebApp.reset();
     }
 
-    /**
-     * @deprecated use {@link #isWebApp()}
-     */
-    @Deprecated(since = "3.0.0", forRemoval = true)
-    public static final boolean IS_WEB_APP = isWebApp();
-
     private static final LazyBoolean threadLocalsEnabled = new LazyBoolean(
             () -> !isWebApp() && 
PropertiesUtil.getProperties().getBooleanProperty(LoggingSystemProperty.THREAD_LOCALS_ENABLE,
 true));
 
@@ -76,12 +70,6 @@ public final class Constants {
         threadLocalsEnabled.reset();
     }
 
-    /**
-     * @deprecated use {@link #isThreadLocalsEnabled()}
-     */
-    @Deprecated(since = "3.0.0", forRemoval = true)
-    public static final boolean ENABLE_THREADLOCALS = isThreadLocalsEnabled();
-
     public static final int JAVA_MAJOR_VERSION = getMajorVersion();
 
     /**
diff --git 
a/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraAppender.java
 
b/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraAppender.java
index bb0d92baf0..548c70b53f 100644
--- 
a/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraAppender.java
+++ 
b/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraAppender.java
@@ -178,7 +178,7 @@ public class CassandraAppender extends 
AbstractDatabaseAppender<CassandraManager
         public CassandraAppender build() {
             final CassandraManager manager = 
CassandraManager.getManager(getName(), contactPoints, columns, useTls,
                 clusterName, keyspace, table, username, password, 
useClockForTimestampGenerator, bufferSize, batched,
-                batchType);
+                batchType, getConfiguration());
             return new CassandraAppender(getName(), getFilter(), 
isIgnoreExceptions(), getPropertyArray(), manager);
         }
 
diff --git 
a/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraManager.java
 
b/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraManager.java
index 358969f6e2..b812d5ef1b 100644
--- 
a/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraManager.java
+++ 
b/log4j-cassandra/src/main/java/org/apache/logging/log4j/cassandra/CassandraManager.java
@@ -30,6 +30,7 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager;
 import org.apache.logging.log4j.core.appender.db.ColumnMapping;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.net.SocketAddress;
 import org.apache.logging.log4j.jdbc.convert.DateTypeConverter;
 import org.apache.logging.log4j.spi.ThreadContextMap;
@@ -57,8 +58,9 @@ public class CassandraManager extends AbstractDatabaseManager 
{
 
     private CassandraManager(final String name, final int bufferSize, final 
Cluster cluster,
                              final String keyspace, final String 
insertQueryTemplate,
-                             final List<ColumnMapping> columnMappings, final 
BatchStatement batchStatement) {
-        super(name, bufferSize);
+                             final List<ColumnMapping> columnMappings, final 
BatchStatement batchStatement,
+                             final Configuration configuration) {
+        super(name, bufferSize, null, configuration);
         this.cluster = cluster;
         this.keyspace = keyspace;
         this.insertQueryTemplate = insertQueryTemplate;
@@ -121,10 +123,11 @@ public class CassandraManager extends 
AbstractDatabaseManager {
                                               final String clusterName, final 
String keyspace, final String table,
                                               final String username, final 
String password,
                                               final boolean 
useClockForTimestampGenerator, final int bufferSize,
-                                              final boolean batched, final 
BatchStatement.Type batchType) {
+                                              final boolean batched, final 
BatchStatement.Type batchType,
+                                              final Configuration 
configuration) {
         return getManager(name,
             new FactoryData(contactPoints, columns, useTls, clusterName, 
keyspace, table, username, password,
-                useClockForTimestampGenerator, bufferSize, batched, 
batchType), CassandraManagerFactory.INSTANCE);
+                useClockForTimestampGenerator, bufferSize, batched, batchType, 
configuration), CassandraManagerFactory.INSTANCE);
     }
 
     private static class CassandraManagerFactory implements 
ManagerFactory<CassandraManager, FactoryData> {
@@ -167,7 +170,7 @@ public class CassandraManager extends 
AbstractDatabaseManager {
             final String insertQueryTemplate = sb.toString();
             LOGGER.debug("Using CQL for appender {}: {}", name, 
insertQueryTemplate);
             return new CassandraManager(name, data.getBufferSize(), cluster, 
data.keyspace, insertQueryTemplate,
-                columnMappings, data.batched ? new 
BatchStatement(data.batchType) : null);
+                columnMappings, data.batched ? new 
BatchStatement(data.batchType) : null, data.getConfiguration());
         }
     }
 
@@ -187,8 +190,8 @@ public class CassandraManager extends 
AbstractDatabaseManager {
         private FactoryData(final SocketAddress[] contactPoints, final 
ColumnMapping[] columns, final boolean useTls,
                             final String clusterName, final String keyspace, 
final String table, final String username,
                             final String password, final boolean 
useClockForTimestampGenerator, final int bufferSize,
-                            final boolean batched, final BatchStatement.Type 
batchType) {
-            super(bufferSize, null);
+                            final boolean batched, final BatchStatement.Type 
batchType, final Configuration configuration) {
+            super(configuration, bufferSize, null);
             this.contactPoints = convertAndAddDefaultPorts(contactPoints);
             this.columns = columns;
             this.useTls = useTls;
diff --git 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/URLStreamHandlerFactoryRule.java
 
b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/URLStreamHandlerFactoryRule.java
deleted file mode 100644
index 61cc2d5b7e..0000000000
--- 
a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/URLStreamHandlerFactoryRule.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.core.test.junit;
-
-import java.lang.reflect.Field;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-import java.util.Hashtable;
-
-import org.junit.Assert;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-/**
- * Installs and restores the URL URLStreamHandlerFactory before and after 
tests.
- * <p>
- * Might need tweaking for different JREs.
- * </p>
- * <p>
- *     Will be remove in version 3.x.
- * </p>
- */
-@Deprecated
-public class URLStreamHandlerFactoryRule implements TestRule {
-
-    public URLStreamHandlerFactoryRule() {
-        this(null);
-    }
-
-    public URLStreamHandlerFactoryRule(final URLStreamHandlerFactory 
newURLStreamHandlerFactory) {
-        this.newURLStreamHandlerFactory = newURLStreamHandlerFactory;
-    }
-
-    private final URLStreamHandlerFactory newURLStreamHandlerFactory;
-
-    void clearURLHandlers() throws Exception {
-        final Field handlersFields = URL.class.getDeclaredField("handlers");
-        if (handlersFields != null) {
-            if (!handlersFields.isAccessible()) {
-                handlersFields.setAccessible(true);
-            }
-            @SuppressWarnings("unchecked")
-            final
-            Hashtable<String, URLStreamHandler> handlers = (Hashtable<String, 
URLStreamHandler>) handlersFields
-                    .get(null);
-            if (handlers != null) {
-                handlers.clear();
-            }
-        }
-    }
-
-    @Override
-    public Statement apply(final Statement base, final Description 
description) {
-        return new Statement() {
-            @Override
-            public void evaluate() throws Throwable {
-                Field factoryField = null;
-                int matches = 0;
-                URLStreamHandlerFactory oldFactory = null;
-                for (final Field field : URL.class.getDeclaredFields()) {
-                    if (URLStreamHandlerFactory.class.equals(field.getType())) 
{
-                        factoryField = field;
-                        matches++;
-                        factoryField.setAccessible(true);
-                        oldFactory = (URLStreamHandlerFactory) 
factoryField.get(null);
-                        break;
-                    }
-                }
-                Assert.assertNotNull("java.net URL does not declare a 
java.net.URLStreamHandlerFactory field",
-                        factoryField);
-                Assert.assertEquals("java.net.URL declares multiple 
java.net.URLStreamHandlerFactory fields.", 1,
-                        matches); // FIXME There is a break in the loop so 
always 0 or 1
-                URL.setURLStreamHandlerFactory(newURLStreamHandlerFactory);
-                try {
-                    base.evaluate();
-                } finally {
-                    clearURLHandlers();
-                    factoryField.set(null, null);
-                    URL.setURLStreamHandlerFactory(oldFactory);
-                }
-            }
-        };
-    }
-}
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
index 57feb1ed95..175a700fe2 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManagerTest.java
@@ -45,7 +45,7 @@ public class MemoryMappedFileManagerTest {
         final boolean append = false;
         final boolean immediateFlush = false;
         try (final MemoryMappedFileManager manager = 
MemoryMappedFileManager.getFileManager(file.getAbsolutePath(),
-                append, immediateFlush, mapSize, null, null)) {
+                append, immediateFlush, mapSize, null, null, null)) {
             byte[] msg;
             for (int i = 0; i < 1000; i++) {
                 msg = ("Message " + i + "\n").getBytes();
@@ -80,7 +80,7 @@ public class MemoryMappedFileManagerTest {
         final boolean isAppend = true;
         final boolean immediateFlush = false;
         try (final MemoryMappedFileManager manager = 
MemoryMappedFileManager.getFileManager(file.getAbsolutePath(),
-                isAppend, immediateFlush, 
MemoryMappedFileManager.DEFAULT_REGION_LENGTH, null, null)) {
+                isAppend, immediateFlush, 
MemoryMappedFileManager.DEFAULT_REGION_LENGTH, null, null, null)) {
             manager.writeBytes(new byte[initialLength], 0, initialLength);
         }
         final int expected = initialLength * 2;
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
index 8cea4dd554..ca97ada8fd 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java
@@ -46,7 +46,7 @@ public class AbstractDatabaseAppenderTest {
     }
     private static abstract class LocalAbstractDatabaseManager extends 
AbstractDatabaseManager {
         public LocalAbstractDatabaseManager(final String name, final int 
bufferSize) {
-            super(name, bufferSize);
+            super(name, bufferSize, null, null);
         }
     }
 
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java
index f5b2cf9acb..e9fe158dfb 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java
@@ -36,7 +36,7 @@ public class AbstractDatabaseManagerTest {
     private static class StubDatabaseManager extends AbstractDatabaseManager {
 
         protected StubDatabaseManager(final String name, final int bufferSize) 
{
-            super(name, bufferSize);
+            super(name, bufferSize, null, null);
         }
 
         @Override
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
index 5701fd0466..81b73cdbc6 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java
@@ -76,8 +76,14 @@ public class CustomConfigurationTest {
         final AppenderRef ref = AppenderRef.createAppenderRef("File", null, 
null);
         final AppenderRef[] refs = new AppenderRef[]{ref};
 
-        final LoggerConfig loggerConfig = LoggerConfig.createLogger(false, 
Level.INFO, "org.apache.logging.log4j",
-                "true", refs, null, config, null);
+        final LoggerConfig loggerConfig = LoggerConfig.newBuilder()
+                .setAdditivity(false)
+                .setLevel(Level.INFO)
+                .setLoggerName("org.apache.logging.log4j")
+                .setIncludeLocation("true")
+                .setRefs(refs)
+                .setConfig(config)
+                .build();
         loggerConfig.addAppender(appender, null, null);
         config.addLogger("org.apache.logging.log4j", loggerConfig);
         ctx.updateLoggers();
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/JiraLog4j2_2134Test.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/JiraLog4j2_2134Test.java
index c5eefc7cd9..5b78706d56 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/JiraLog4j2_2134Test.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/JiraLog4j2_2134Test.java
@@ -50,8 +50,14 @@ public class JiraLog4j2_2134Test {
         config.addAppender(appender);
         final AppenderRef ref = AppenderRef.createAppenderRef("File", null, 
null);
         final AppenderRef[] refs = new AppenderRef[]{ref};
-        final LoggerConfig loggerConfig = LoggerConfig.createLogger(false, 
Level.INFO, "testlog4j2refresh", "true", refs,
-        null, config, null);
+        final LoggerConfig loggerConfig = LoggerConfig.newBuilder()
+                .setAdditivity(false)
+                .setLevel(Level.INFO)
+                .setLoggerName("testlog4j2refresh")
+                .setIncludeLocation("true")
+                .setRefs(refs)
+                .setConfig(config)
+                .build();
         loggerConfig.addAppender(appender, null, null);
         config.addLogger("testlog4j2refresh", loggerConfig);
         ctx.stop();
@@ -127,8 +133,14 @@ public class JiraLog4j2_2134Test {
         config.addAppender(appender);
         final AppenderRef ref = AppenderRef.createAppenderRef("File", null, 
null);
         final AppenderRef[] refs = new AppenderRef[]{ref};
-        final LoggerConfig loggerConfig = LoggerConfig.createLogger(false, 
Level.INFO, "testlog4j2refresh", "true", refs,
-        null, config, null);
+        final LoggerConfig loggerConfig = LoggerConfig.newBuilder()
+                .setAdditivity(false)
+                .setLevel(Level.INFO)
+                .setLoggerName("testlog4j2refresh")
+                .setIncludeLocation("true")
+                .setRefs(refs)
+                .setConfig(config)
+                .build();
         loggerConfig.addAppender(appender, null, null);
         config.addLogger("testlog4j2refresh", loggerConfig);
         ctx.stop();
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/LoggerConfigTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/LoggerConfigTest.java
index 644fd6fa49..867e28bd24 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/LoggerConfigTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/LoggerConfigTest.java
@@ -44,11 +44,14 @@ public class LoggerConfigTest {
     private static final String FQCN = LoggerConfigTest.class.getName();
 
     private static LoggerConfig createForProperties(final Property[] 
properties) {
-        return LoggerConfig.createLogger(true, Level.INFO, "name", "false", 
new AppenderRef[0], properties,
-                new NullConfiguration(), null);
+        return LoggerConfig.newBuilder()
+                .setLevel(Level.INFO)
+                .setLoggerName("name")
+                .setProperties(properties)
+                .setConfig(new NullConfiguration())
+                .build();
     }
 
-    @SuppressWarnings({"deprecation"})
     @Test
     public void testPropertiesWithoutSubstitution() {
         assertNull(createForProperties(null).getPropertyList(), "null 
propertiesList");
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
index cb0311dc3f..83e50ae207 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilterTest.java
@@ -22,7 +22,9 @@ import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class ThreadContextMapFilterTest {
 
@@ -32,7 +34,10 @@ public class ThreadContextMapFilterTest {
         ThreadContext.put("organization", "Apache");
         final KeyValuePair[] pairs = new KeyValuePair[] { new 
KeyValuePair("userid", "JohnDoe"),
                                                     new 
KeyValuePair("organization", "Apache")};
-        ThreadContextMapFilter filter = 
ThreadContextMapFilter.createFilter(pairs, "and", null, null);
+        ThreadContextMapFilter filter = ThreadContextMapFilter.newBuilder()
+                .setPairs(pairs)
+                .setOperator("and")
+                .get();
         assertNotNull(filter);
         filter.start();
         assertTrue(filter.isStarted());
@@ -44,7 +49,10 @@ public class ThreadContextMapFilterTest {
         ThreadContext.put("organization", "ASF");
         assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, 
(Object) null, (Throwable) null));
         ThreadContext.clearMap();
-        filter = ThreadContextMapFilter.createFilter(pairs, "or", null, null);
+        filter = ThreadContextMapFilter.newBuilder()
+                .setPairs(pairs)
+                .setOperator("or")
+                .get();
         assertNotNull(filter);
         filter.start();
         assertTrue(filter.isStarted());
@@ -56,7 +64,9 @@ public class ThreadContextMapFilterTest {
         ThreadContext.remove("organization");
         assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, 
(Object) null, (Throwable) null));
         final KeyValuePair[] single = new KeyValuePair[] {new 
KeyValuePair("userid", "testuser")};
-        filter = ThreadContextMapFilter.createFilter(single, null, null, null);
+        filter = ThreadContextMapFilter.newBuilder()
+                .setPairs(single)
+                .get();
         assertNotNull(filter);
         filter.start();
         assertTrue(filter.isStarted());
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/PatternSelectorTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/PatternSelectorTest.java
index 847565221e..ba62a041e3 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/PatternSelectorTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/layout/PatternSelectorTest.java
@@ -25,7 +25,7 @@ import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.assertj.core.api.Assertions.assertThat;
 
 public class PatternSelectorTest {
 
@@ -60,21 +60,26 @@ public class PatternSelectorTest {
                 .setMessage(new SimpleMessage("entry")).build();
         final String result1 = new FauxLogger().formatEvent(event1, layout);
         final String expectSuffix1 = String.format("====== 
PatternSelectorTest.testMarkerPatternSelector:61 entry ======%n");
-        assertTrue(result1.endsWith(expectSuffix1), "Unexpected result: " + 
result1);
+        assertThat(result1).endsWith(expectSuffix1);
         final LogEvent event2 = Log4jLogEvent.newBuilder() //
                 
.setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger")
 //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world 1!")).build();
         final String result2 = new String(layout.toByteArray(event2));
         final String expectSuffix2 = String.format("Hello, world 1!%n");
-        assertTrue(result2.endsWith(expectSuffix2), "Unexpected result: " + 
result2);
+        assertThat(result2).endsWith(expectSuffix2);
     }
 
     @Test
     public void testLevelPatternSelector() throws Exception {
         final PatternMatch[] patterns = new PatternMatch[1];
         patterns[0] = new PatternMatch("TRACE", "%d %-5p [%t]: ====== 
%C{1}.%M:%L %m ======%n");
-        final PatternSelector selector = 
LevelPatternSelector.createSelector(patterns, "%d %-5p [%t]: %m%n", true, true, 
ctx.getConfiguration());
+        final LevelPatternSelector selector = LevelPatternSelector.newBuilder()
+                .setConfiguration(ctx.getConfiguration())
+                .setDefaultPattern("%d %-5p [%t]: %m%n")
+                .setDisableAnsi(true)
+                .setProperties(patterns)
+                .build();
         final PatternLayout layout = 
PatternLayout.newBuilder().setPatternSelector(selector)
                 .setConfiguration(ctx.getConfiguration()).build();
         final LogEvent event1 = Log4jLogEvent.newBuilder() //
@@ -83,14 +88,14 @@ public class PatternSelectorTest {
                 .setIncludeLocation(true)
                 .setMessage(new SimpleMessage("entry")).build();
         final String result1 = new FauxLogger().formatEvent(event1, layout);
-        final String expectSuffix1 = String.format("====== 
PatternSelectorTest.testLevelPatternSelector:85 entry ======%n");
-        assertTrue(result1.endsWith(expectSuffix1), "Unexpected result: " + 
result1);
+        final String expectSuffix1 = String.format("====== 
PatternSelectorTest.testLevelPatternSelector:90 entry ======%n");
+        assertThat(result1).endsWith(expectSuffix1);
         final LogEvent event2 = Log4jLogEvent.newBuilder() //
                 
.setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger")
 //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world 1!")).build();
         final String result2 = new String(layout.toByteArray(event2));
         final String expectSuffix2 = String.format("Hello, world 1!%n");
-        assertTrue(result2.endsWith(expectSuffix2), "Unexpected result: " + 
result2);
+        assertThat(result2).endsWith(expectSuffix2);
     }
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
index c30f0176b1..7628aa6e42 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
@@ -131,35 +131,6 @@ public abstract class AbstractAppender extends 
AbstractFilterable implements App
         this.ignoreExceptions = ignoreExceptions;
     }
 
-    /**
-     * Constructor that defaults to suppressing exceptions.
-     *
-     * @param name The Appender name.
-     * @param filter The Filter to associate with the Appender.
-     * @param layout The layout to use to format the event.
-     * @deprecated Use {@link #AbstractAppender(String, Filter, Layout, 
boolean, Property[])}.
-     */
-    @Deprecated
-    protected AbstractAppender(final String name, final Filter filter, final 
Layout layout) {
-        this(name, filter, layout, true, Property.EMPTY_ARRAY);
-    }
-
-    /**
-     * Constructor.
-     *
-     * @param name The Appender name.
-     * @param filter The Filter to associate with the Appender.
-     * @param layout The layout to use to format the event.
-     * @param ignoreExceptions If true, exceptions will be logged and 
suppressed. If false errors will be logged and
-     *            then passed to the application.
-     * @deprecated Use {@link #AbstractAppender(String, Filter, Layout, 
boolean, Property[])}
-     */
-    @Deprecated
-    protected AbstractAppender(final String name, final Filter filter, final 
Layout layout,
-            final boolean ignoreExceptions) {
-        this(name, filter, layout, ignoreExceptions, Property.EMPTY_ARRAY);
-    }
-
     public static int parseInt(final String s, final int defaultValue) {
         try {
             return Integers.parseInt(s, defaultValue);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
index 1693c6d4c0..96aac7c610 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileAppender.java
@@ -23,6 +23,8 @@ import java.util.concurrent.TimeUnit;
 import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.net.Advertiser;
 import org.apache.logging.log4j.core.util.Integers;
@@ -79,14 +81,16 @@ public final class MemoryMappedFileAppender extends 
AbstractOutputStreamAppender
                 return null;
             }
             final Layout layout = getOrCreateLayout();
+            final Configuration configuration = getConfiguration();
+            final LoggerContext loggerContext = 
configuration.getLoggerContext();
             final MemoryMappedFileManager manager = 
MemoryMappedFileManager.getFileManager(fileName, append, isImmediateFlush(),
-                    actualRegionLength, advertiseURI, layout);
+                    actualRegionLength, advertiseURI, layout, loggerContext);
             if (manager == null) {
                 return null;
             }
 
             return new MemoryMappedFileAppender(name, layout, getFilter(), 
manager, fileName, isIgnoreExceptions(), false,
-                    advertise ? getConfiguration().getAdvertiser() : null, 
getPropertyArray());
+                    advertise ? configuration.getAdvertiser() : null, 
getPropertyArray());
         }
 
         public B setFileName(final String fileName) {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
index 453031976c..3a4f4a6cf5 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/MemoryMappedFileManager.java
@@ -34,6 +34,7 @@ import java.util.Objects;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.FileUtils;
 import org.apache.logging.log4j.util.ReflectionUtil;
@@ -74,8 +75,9 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
 
     protected MemoryMappedFileManager(final RandomAccessFile file, final 
String fileName, final OutputStream os,
                                       final boolean immediateFlush, final long 
position, final int regionLength, final String advertiseURI,
-                                      final Layout layout, final boolean 
writeHeader) throws IOException {
-        super(os, fileName, layout, writeHeader, ByteBuffer.wrap(new byte[0]));
+                                      final Layout layout, final boolean 
writeHeader, final LoggerContext loggerContext) throws IOException {
+
+        super(loggerContext, os, fileName, false, layout, writeHeader, 
ByteBuffer.wrap(new byte[0]));
         this.immediateFlush = immediateFlush;
         this.randomAccessFile = Objects.requireNonNull(file, 
"RandomAccessFile");
         this.regionLength = regionLength;
@@ -96,30 +98,11 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
      * @param layout The layout.
      * @return A MemoryMappedFileManager for the File.
      */
-    public static MemoryMappedFileManager getFileManager(final String 
fileName, final boolean append,
-            final boolean immediateFlush, final int regionLength, final String 
advertiseURI,
-            final Layout layout) {
+    public static MemoryMappedFileManager getFileManager(
+            final String fileName, final boolean append, final boolean 
immediateFlush, final int regionLength,
+            final String advertiseURI, final Layout layout, final 
LoggerContext loggerContext) {
         return narrow(MemoryMappedFileManager.class, getManager(fileName, new 
FactoryData(append, immediateFlush,
-                regionLength, advertiseURI, layout), FACTORY));
-    }
-
-    /**
-     * No longer used, the {@link 
org.apache.logging.log4j.core.LogEvent#isEndOfBatch()} attribute is used 
instead.
-     * @return {@link Boolean#FALSE}.
-     * @deprecated end-of-batch on the event is used instead.
-     */
-    @Deprecated
-    public Boolean isEndOfBatch() {
-        return Boolean.FALSE;
-    }
-
-    /**
-     * No longer used, the {@link 
org.apache.logging.log4j.core.LogEvent#isEndOfBatch()} attribute is used 
instead.
-     * This method is a no-op.
-     * @deprecated end-of-batch on the event is used instead.
-     */
-    @Deprecated
-    public void setEndOfBatch(@SuppressWarnings("unused") final boolean 
endOfBatch) {
+                regionLength, advertiseURI, layout, loggerContext), FACTORY));
     }
 
     @Override
@@ -323,6 +306,7 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
         private final int regionLength;
         private final String advertiseURI;
         private final Layout layout;
+        private final LoggerContext loggerContext;
 
         /**
          * Constructor.
@@ -334,12 +318,13 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
          * @param layout The layout.
          */
         public FactoryData(final boolean append, final boolean immediateFlush, 
final int regionLength,
-                final String advertiseURI, final Layout layout) {
+                final String advertiseURI, final Layout layout, final 
LoggerContext loggerContext) {
             this.append = append;
             this.immediateFlush = immediateFlush;
             this.regionLength = regionLength;
             this.advertiseURI = advertiseURI;
             this.layout = layout;
+            this.loggerContext = loggerContext;
         }
     }
 
@@ -377,7 +362,7 @@ public class MemoryMappedFileManager extends 
OutputStreamManager {
                 final long position = (data.append) ? raf.length() : 0;
                 raf.setLength(position + data.regionLength);
                 return new MemoryMappedFileManager(raf, name, os, 
data.immediateFlush, position, data.regionLength,
-                        data.advertiseURI, data.layout, writeHeader);
+                        data.advertiseURI, data.layout, writeHeader, 
data.loggerContext);
             } catch (final Exception ex) {
                 LOGGER.error("MemoryMappedFileManager (" + name + ") " + ex, 
ex);
                 Closer.closeSilently(raf);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
index 0405b52535..1bdc922f70 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/OutputStreamManager.java
@@ -45,23 +45,7 @@ public class OutputStreamManager extends AbstractManager 
implements ByteBufferDe
 
     protected OutputStreamManager(final OutputStream os, final String 
streamName, final Layout layout,
             final boolean writeHeader, final int bufferSize) {
-        this(os, streamName, layout, writeHeader, ByteBuffer.wrap(new 
byte[bufferSize]));
-    }
-
-    /**
-     * @since 2.6
-     * @deprecated
-     */
-    @Deprecated
-    protected OutputStreamManager(final OutputStream os, final String 
streamName, final Layout layout,
-            final boolean writeHeader, final ByteBuffer byteBuffer) {
-        super(null, streamName);
-        this.outputStream = os;
-        this.layout = layout;
-        this.byteBuffer = Objects.requireNonNull(byteBuffer, "byteBuffer");
-        if (writeHeader) {
-            writeHeader(os);
-        }
+        this(null, os, streamName, false, layout, writeHeader, 
ByteBuffer.wrap(new byte[bufferSize]));
     }
 
     /**
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
index 30fd5b543e..f562be43dc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/RandomAccessFileManager.java
@@ -72,25 +72,6 @@ public class RandomAccessFileManager extends 
OutputStreamManager {
                 new FactoryData(append, immediateFlush, bufferSize, 
advertiseURI, layout, configuration), FACTORY));
     }
 
-    /**
-     * No longer used, the {@link 
org.apache.logging.log4j.core.LogEvent#isEndOfBatch()} attribute is used 
instead.
-     * @return {@link Boolean#FALSE}.
-     * @deprecated end-of-batch on the event is used instead.
-     */
-    @Deprecated
-    public Boolean isEndOfBatch() {
-        return Boolean.FALSE;
-    }
-
-    /**
-     * No longer used, the {@link 
org.apache.logging.log4j.core.LogEvent#isEndOfBatch()} attribute is used 
instead.
-     * This method is a no-op.
-     * @deprecated end-of-batch on the event is used instead.
-     */
-    @Deprecated
-    public void setEndOfBatch(@SuppressWarnings("unused") final boolean 
endOfBatch) {
-    }
-
     @Override
     protected void writeToDestination(final byte[] bytes, final int offset, 
final int length) {
         try {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
index b434677c70..3569099cbb 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
@@ -240,14 +240,6 @@ public class SyslogAppender extends SocketAppender {
             return asBuilder();
         }
 
-        /**
-         * @deprecated Use {@link #setEnterpriseNumber(String)} instead
-         */
-        public B setEnterpriseNumber(final int enterpriseNumber) {
-            this.enterpriseNumber = String.valueOf(enterpriseNumber);
-            return asBuilder();
-        }
-
         public B setIncludeMdc(final boolean includeMdc) {
             this.includeMdc = includeMdc;
             return asBuilder();
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java
index f004aaba40..b82e98076c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManager.java
@@ -39,18 +39,6 @@ public abstract class AbstractDatabaseManager extends 
AbstractManager implements
         private final int bufferSize;
         private final Layout layout;
 
-        /**
-         * Constructs the base factory data.
-         *
-         * @param bufferSize The size of the buffer.
-         * @param layout The appender-level layout
-         * @deprecated Use {@link 
AbstractFactoryData#AbstractFactoryData(Configuration, int, Layout)}.
-         */
-        @Deprecated
-        protected AbstractFactoryData(final int bufferSize, final Layout 
layout) {
-            this(null, bufferSize, layout);
-        }
-
         /**
          * Constructs the base factory data.
          * @param configuration Configuration creating this instance.
@@ -105,31 +93,6 @@ public abstract class AbstractDatabaseManager extends 
AbstractManager implements
     private final int bufferSize;
     private final Layout layout;
     private boolean running;
-    /**
-     * Constructs the base manager.
-     *
-     * @param name The manager name, which should include any configuration 
details that one might want to be able to
-     *             reconfigure at runtime, such as database name, username, 
(hashed) password, etc.
-     * @param bufferSize The size of the log event buffer.
-     * @deprecated Use {@link 
AbstractDatabaseManager#AbstractDatabaseManager(String, int, Layout, 
Configuration)}.
-     */
-    @Deprecated
-    protected AbstractDatabaseManager(final String name, final int bufferSize) 
{
-        this(name, bufferSize, null);
-    }
-
-    /**
-     * Constructs the base manager.
-     *
-     * @param name The manager name, which should include any configuration 
details that one might want to be able to
-     *             reconfigure at runtime, such as database name, username, 
(hashed) password, etc.
-     * @param layout the Appender-level layout.
-     * @param bufferSize The size of the log event buffer.
-     * @deprecated Use {@link 
AbstractDatabaseManager#AbstractDatabaseManager(String, int, Layout, 
Configuration)}.
-     */
-    protected AbstractDatabaseManager(final String name, final int bufferSize, 
final Layout layout) {
-        this(name, bufferSize, layout, null);
-    }
 
     /**
      * Constructs the base manager.
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java
index 3145416406..44a9f9fbbc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/nosql/NoSqlDatabaseManager.java
@@ -220,20 +220,6 @@ public final class NoSqlDatabaseManager<W> extends 
AbstractDatabaseManager {
         return elementEntity;
     }
 
-    /**
-     * Creates a NoSQL manager for use within the {@link NoSqlAppender}, or 
returns a suitable one if it already exists.
-     *
-     * @param name The name of the manager, which should include connection 
details and hashed passwords where possible.
-     * @param bufferSize The size of the log event buffer.
-     * @param provider A provider instance which will be used to obtain 
connections to the chosen NoSQL database.
-     * @return a new or existing NoSQL manager as applicable.
-     * @deprecated Use {@link #getNoSqlDatabaseManager(String, int, 
NoSqlProvider, KeyValuePair[], Configuration)}.
-     */
-    @Deprecated
-    public static NoSqlDatabaseManager<?> getNoSqlDatabaseManager(final String 
name, final int bufferSize, final NoSqlProvider<?> provider) {
-        return AbstractDatabaseManager.getManager(name, new FactoryData(null, 
bufferSize, provider, null), FACTORY);
-    }
-
     /**
      * Creates a NoSQL manager for use within the {@link NoSqlAppender}, or 
returns a suitable one if it already exists.
      *
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
index 38ac430e8d..314ca0f957 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingRandomAccessFileManager.java
@@ -99,25 +99,6 @@ public class RollingRandomAccessFileManager extends 
RollingFileManager {
                 filePermissions, fileOwner, fileGroup, configuration), 
FACTORY));
     }
 
-    /**
-     * No longer used, the {@link 
org.apache.logging.log4j.core.LogEvent#isEndOfBatch()} attribute is used 
instead.
-     * @return {@link Boolean#FALSE}.
-     * @deprecated end-of-batch on the event is used instead.
-     */
-    @Deprecated
-    public Boolean isEndOfBatch() {
-        return Boolean.FALSE;
-    }
-
-    /**
-     * No longer used, the {@link 
org.apache.logging.log4j.core.LogEvent#isEndOfBatch()} attribute is used 
instead.
-     * This method is a no-op.
-     * @deprecated end-of-batch on the event is used instead.
-     */
-    @Deprecated
-    public void setEndOfBatch(@SuppressWarnings("unused") final boolean 
endOfBatch) {
-    }
-
     // override to make visible for unit tests
     @Override
     protected void write(final byte[] bytes, final int offset, final int 
length,
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/GzCompressAction.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/GzCompressAction.java
index 1c8ce492d5..765ace6100 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/GzCompressAction.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/GzCompressAction.java
@@ -76,16 +76,6 @@ public final class GzCompressAction extends AbstractAction {
         this.compressionLevel = compressionLevel;
     }
 
-    /**
-     * Prefer the constructor with compression level.
-     *
-     * @deprecated Prefer {@link GzCompressAction#GzCompressAction(File, File, 
boolean, int)}.
-     */
-    @Deprecated
-    public GzCompressAction(final File source, final File destination, final 
boolean deleteSource) {
-        this(source, destination, deleteSource, Deflater.DEFAULT_COMPRESSION);
-    }
-
     /**
      * Compress.
      *
@@ -97,23 +87,6 @@ public final class GzCompressAction extends AbstractAction {
         return execute(source, destination, deleteSource, compressionLevel);
     }
 
-    /**
-     * Compress a file.
-     *
-     * @param source       file to compress, may not be null.
-     * @param destination  compressed file, may not be null.
-     * @param deleteSource if true, attempt to delete file on completion.  
Failure to delete
-     *                     does not cause an exception to be thrown or affect 
return value.
-     * @return true if source file compressed.
-     * @throws IOException on IO exception.
-     * @deprecated In favor of {@link #execute(File, File, boolean, int)}.
-     */
-    @Deprecated
-    public static boolean execute(final File source, final File destination, 
final boolean deleteSource)
-            throws IOException {
-        return execute(source, destination, deleteSource, 
Deflater.DEFAULT_COMPRESSION);
-    }
-
     /**
      * Compress a file.
      *
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModified.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModified.java
index 4969ee02c5..97eaa3a390 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModified.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfLastModified.java
@@ -98,18 +98,6 @@ public final class IfLastModified implements PathCondition {
         return "IfLastModified(age=" + age + nested + ")";
     }
 
-    /**
-     * Create an IfLastModified condition.
-     *
-     * @param age The path age that is accepted by this condition. Must be a 
valid Duration.
-     * @param nestedConditions nested conditions to evaluate if this condition 
accepts a path
-     * @return An IfLastModified condition.
-     */
-    @Deprecated(since = "3.0.0", forRemoval = true)
-    public static IfLastModified createAgeCondition(final Duration age, final 
PathCondition... nestedConditions) {
-        return 
newBuilder().setAge(age).setNestedConditions(nestedConditions).get();
-    }
-
     @PluginFactory
     public static Builder newBuilder() {
         return new Builder();
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
index b10eaba0f5..e80233758e 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.core.async;
 
-import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
@@ -30,7 +29,6 @@ import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.impl.LogEventFactory;
 import org.apache.logging.log4j.core.jmx.RingBufferAdmin;
-import org.apache.logging.log4j.core.util.Booleans;
 import org.apache.logging.log4j.plugins.Configurable;
 import org.apache.logging.log4j.plugins.Plugin;
 import org.apache.logging.log4j.plugins.PluginFactory;
@@ -212,76 +210,6 @@ public class AsyncLoggerConfig extends LoggerConfig {
         return delegate.createRingBufferAdmin(contextName, getName());
     }
 
-    /**
-     * Factory method to create a LoggerConfig.
-     *
-     * @param additivity True if additive, false otherwise.
-     * @param levelName The Level to be associated with the Logger.
-     * @param loggerName The name of the Logger.
-     * @param includeLocation "true" if location should be passed downstream
-     * @param refs An array of Appender names.
-     * @param properties Properties to pass to the Logger.
-     * @param config The Configuration.
-     * @param filter A Filter.
-     * @return A new LoggerConfig.
-     * @deprecated use {@link #createLogger(boolean, Level, String, String, 
AppenderRef[], Property[], Configuration, Filter)}
-     */
-    @Deprecated
-    public static LoggerConfig createLogger(
-            final String additivity,
-            final String levelName,
-            final String loggerName,
-            final String includeLocation,
-            final AppenderRef[] refs,
-            final Property[] properties,
-            final Configuration config,
-            final Filter filter) {
-        if (loggerName == null) {
-            LOGGER.error("Loggers cannot be configured without a name");
-            return null;
-        }
-
-        final List<AppenderRef> appenderRefs = Arrays.asList(refs);
-        Level level;
-        try {
-            level = Level.toLevel(levelName, Level.ERROR);
-        } catch (final Exception ex) {
-            LOGGER.error(
-                    "Invalid Log level specified: {}. Defaulting to Error",
-                    levelName);
-            level = Level.ERROR;
-        }
-        final String name = loggerName.equals(LoggerConfig.ROOT) ? 
Strings.EMPTY : loggerName;
-        final boolean additive = Booleans.parseBoolean(additivity, true);
-
-        return new AsyncLoggerConfig(name, appenderRefs, filter, level,
-                additive, properties, config, includeLocation(includeLocation),
-                config.getComponent(LogEventFactory.KEY));
-    }
-
-    /**
-     * Factory method to create a LoggerConfig.
-     *
-     * @param additivity True if additive, false otherwise.
-     * @param level The Level to be associated with the Logger.
-     * @param loggerName The name of the Logger.
-     * @param includeLocation "true" if location should be passed downstream
-     * @param refs An array of Appender names.
-     * @param properties Properties to pass to the Logger.
-     * @param config The Configuration.
-     * @param filter A Filter.
-     * @return A new LoggerConfig.
-     * @since 3.0
-     */
-    @Deprecated
-    public static LoggerConfig createLogger(
-            final boolean additivity, final Level level, final String 
loggerName, final String includeLocation,
-            final AppenderRef[] refs, final Property[] properties, final 
Configuration config, final Filter filter) {
-        final String name = loggerName.equals(ROOT) ? Strings.EMPTY : 
loggerName;
-        return new AsyncLoggerConfig(name, Arrays.asList(refs), filter, level, 
additivity, properties, config,
-                includeLocation(includeLocation), 
config.getComponent(LogEventFactory.KEY));
-    }
-
     // Note: for asynchronous loggers, includeLocation default is FALSE
     protected static boolean includeLocation(final String 
includeLocationConfigValue) {
         return Boolean.parseBoolean(includeLocationConfigValue);
@@ -311,15 +239,5 @@ public class AsyncLoggerConfig extends LoggerConfig {
             }
         }
 
-        @Deprecated
-        public static LoggerConfig createLogger(final String additivity, final 
Level level, final String includeLocation,
-                final AppenderRef[] refs, final Property[] properties, final 
Configuration config, final Filter filter) {
-            final List<AppenderRef> appenderRefs = Arrays.asList(refs);
-            final Level actualLevel = level == null ? Level.ERROR : level;
-            final boolean additive = Booleans.parseBoolean(additivity, true);
-            return new AsyncLoggerConfig(LogManager.ROOT_LOGGER_NAME, 
appenderRefs, filter, actualLevel, additive,
-                    properties, config, 
AsyncLoggerConfig.includeLocation(includeLocation),
-                    config.getComponent(LogEventFactory.KEY));
-        }
     }
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
index 90f6b491fb..eb22159d52 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
@@ -144,7 +144,7 @@ public class RingBufferLogEvent implements LogEvent, 
ReusableMessage, CharSequen
     private StringBuilder getMessageTextForWriting() {
         if (messageText == null) {
             // Happens the first time messageText is requested or if a user 
logs
-            // a custom reused message when Constants.ENABLE_THREADLOCALS is 
false
+            // a custom reused message when Constants.isThreadLocalsEnabled() 
is false
             messageText = new 
StringBuilder(Constants.INITIAL_REUSABLE_MESSAGE_SIZE);
         }
         messageText.setLength(0);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 57e16a552b..10feed227d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.config;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -1130,18 +1128,6 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
         return null;
     }
 
-    /**
-     * This method is used by Arbiters to create specific children.
-     * @param type The PluginType.
-     * @param node The Node.
-     * @return The created object or null;
-     * @deprecated use {@link #createPluginObject(Node)}
-     */
-    @Deprecated
-    public Object createPluginObject(final PluginType<?> type, final Node 
node) {
-        return createPluginObject(node);
-    }
-
     private void setParents() {
         for (final Map.Entry<String, LoggerConfig> entry : 
loggerConfigs.entrySet()) {
             final LoggerConfig logger = entry.getValue();
@@ -1162,20 +1148,6 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
         }
     }
 
-    /**
-     * Reads an InputStream using buffered reads into a byte array buffer. The 
given InputStream will remain open after
-     * invocation of this method.
-     *
-     * @param is the InputStream to read into a byte array buffer.
-     * @return a byte array of the InputStream contents.
-     * @throws IOException if the {@code read} method of the provided 
InputStream throws this exception.
-     * @deprecated use {@link InputStream#readAllBytes()}
-     */
-    @Deprecated(since = "3.0.0")
-    protected static byte[] toByteArray(final InputStream is) throws 
IOException {
-        return is.readAllBytes();
-    }
-
     @Override
     public NanoClock getNanoClock() {
         return instanceFactory.getInstance(NanoClock.class);
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
index e94a2eb3f1..a86f0470fe 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
@@ -39,7 +39,6 @@ import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.core.impl.LogEventFactory;
 import org.apache.logging.log4j.core.impl.ReusableLogEventFactory;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
-import org.apache.logging.log4j.core.util.Booleans;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.plugins.Configurable;
 import org.apache.logging.log4j.plugins.Inject;
@@ -88,7 +87,7 @@ public class LoggerConfig extends AbstractFilterable {
      *            The type to build
      */
     public static class Builder<B extends Builder<B>>
-            implements 
org.apache.logging.log4j.core.util.Builder<LoggerConfig> {
+            implements 
org.apache.logging.log4j.plugins.util.Builder<LoggerConfig> {
 
         @PluginBuilderAttribute
         private Boolean additivity;
@@ -152,7 +151,7 @@ public class LoggerConfig extends AbstractFilterable {
             return refs;
         }
 
-        public B setRefs(@PluginElement final AppenderRef[] refs) {
+        public B setRefs(@PluginElement final AppenderRef... refs) {
             this.refs = refs;
             return asBuilder();
         }
@@ -161,7 +160,7 @@ public class LoggerConfig extends AbstractFilterable {
             return properties;
         }
 
-        public B setProperties(@PluginElement final Property[] properties) {
+        public B setProperties(@PluginElement final Property... properties) {
             this.properties = properties;
             return asBuilder();
         }
@@ -643,29 +642,6 @@ public class LoggerConfig extends AbstractFilterable {
         return Strings.isEmpty(name) ? ROOT : name;
     }
 
-    /**
-     * Factory method to create a LoggerConfig.
-     *
-     * @param additivity true if additive, false otherwise.
-     * @param level The Level to be associated with the Logger.
-     * @param loggerName The name of the Logger.
-     * @param includeLocation whether location should be passed downstream
-     * @param refs An array of Appender names.
-     * @param properties Properties to pass to the Logger.
-     * @param config The Configuration.
-     * @param filter A Filter.
-     * @return A new LoggerConfig.
-     * @since 2.6
-     */
-    @Deprecated
-    public static LoggerConfig createLogger(
-            final boolean additivity, final Level level, final String 
loggerName, final String includeLocation,
-            final AppenderRef[] refs, final Property[] properties, final 
Configuration config, final Filter filter) {
-        final String name = loggerName.equals(ROOT) ? Strings.EMPTY : 
loggerName;
-        return new LoggerConfig(name, Arrays.asList(refs), filter, level, 
additivity, properties, config,
-            includeLocation(includeLocation, config), 
config.getComponent(LogEventFactory.KEY));
-    }
-
     // Note: for asynchronous loggers, includeLocation default is FALSE,
     // for synchronous loggers, includeLocation default is TRUE.
     protected static boolean includeLocation(final String 
includeLocationConfigValue, final Configuration configuration) {
@@ -706,7 +682,7 @@ public class LoggerConfig extends AbstractFilterable {
          *            The type to build
          */
         public static class Builder<B extends Builder<B>>
-                implements 
org.apache.logging.log4j.core.util.Builder<LoggerConfig> {
+                implements 
org.apache.logging.log4j.plugins.util.Builder<LoggerConfig> {
 
             private boolean additivity;
             private Level level;
@@ -814,18 +790,6 @@ public class LoggerConfig extends AbstractFilterable {
         }
 
 
-        @Deprecated
-        public static LoggerConfig createLogger(
-                final String additivity, final Level level, final String 
includeLocation, final AppenderRef[] refs,
-                final Property[] properties, final Configuration config, final 
Filter filter) {
-            final List<AppenderRef> appenderRefs = Arrays.asList(refs);
-            final Level actualLevel = level == null ? Level.ERROR : level;
-            final boolean additive = Booleans.parseBoolean(additivity, true);
-
-            return new LoggerConfig(LogManager.ROOT_LOGGER_NAME, appenderRefs, 
filter, actualLevel, additive,
-                    properties, config, includeLocation(includeLocation, 
config),
-                    config.getComponent(LogEventFactory.KEY));
-        }
     }
 
     protected static LevelAndRefs getLevelAndRefs(final Level level, final 
AppenderRef[] refs, final String levelAndRefs,
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
index 630d036450..a1e39d0ae7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
@@ -53,30 +53,6 @@ import org.apache.logging.log4j.util.StringMap;
 @PerformanceSensitive("allocation")
 public final class DynamicThresholdFilter extends AbstractFilter {
 
-    /**
-     * Creates a DynamicThresholdFilter.
-     * @param key The name of the key to compare.
-     * @param pairs An array of value and Level pairs.
-     * @param defaultThreshold The default Level.
-     * @param onMatch The action to perform if a match occurs.
-     * @param onMismatch The action to perform if no match occurs.
-     * @return The DynamicThresholdFilter.
-     * @deprecated use {@link Builder}
-     */
-    @Deprecated(since = "3.0.0", forRemoval = true)
-    public static DynamicThresholdFilter createFilter(
-            final String key, final KeyValuePair[] pairs, final Level 
defaultThreshold, final Result onMatch,
-            final Result onMismatch) {
-        return newBuilder()
-                .setKey(key)
-                .setPairs(pairs)
-                .setDefaultThreshold(defaultThreshold)
-                .setOnMatch(onMatch)
-                .setOnMismatch(onMismatch)
-                
.setContextDataInjector(ContextDataInjectorFactory.createInjector())
-                .get();
-    }
-
     @PluginFactory
     public static Builder newBuilder() {
         return new Builder();
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
index 84e0877b09..81fd9125d3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
@@ -260,7 +260,10 @@ public class ThreadContextMapFilter extends MapFilter {
                 return null;
             }
             final boolean isAnd = operator == null || 
!operator.equalsIgnoreCase("or");
-            return new ThreadContextMapFilter(map, isAnd, getOnMatch(), 
getOnMismatch(), contextDataInjector);
+            final ContextDataInjector injector = contextDataInjector != null
+                    ? contextDataInjector
+                    : ContextDataInjectorFactory.createInjector();
+            return new ThreadContextMapFilter(map, isAnd, getOnMatch(), 
getOnMismatch(), injector);
         }
     }
 
@@ -269,15 +272,4 @@ public class ThreadContextMapFilter extends MapFilter {
         return new Builder();
     }
 
-    @Deprecated(since = "3.0.0", forRemoval = true)
-    public static ThreadContextMapFilter createFilter(
-            final KeyValuePair[] pairs, final String operator, final Result 
onMatch, final Result onMismatch) {
-        return newBuilder()
-                .setPairs(pairs)
-                .setOperator(operator)
-                .setOnMatch(onMatch)
-                .setOnMismatch(onMismatch)
-                
.setContextDataInjector(ContextDataInjectorFactory.createInjector())
-                .get();
-    }
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
index cfff483228..9d8a2f9f33 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
@@ -252,33 +252,6 @@ public final class TimeFilter extends AbstractFilter {
         return sb.toString();
     }
 
-    /**
-     * Creates a TimeFilter.
-     * @param start The start time.
-     * @param end The end time.
-     * @param tz timezone.
-     * @param match Action to perform if the time matches.
-     * @param mismatch Action to perform if the action does not match.
-     * @return A TimeFilter.
-     */
-    @Deprecated(since = "3.0.0", forRemoval = true)
-    public static TimeFilter createFilter(
-            final String start, final String end, final String tz, final 
Result match, final Result mismatch) {
-        final Builder builder = newBuilder()
-                .setStart(start)
-                .setEnd(end);
-        if (tz != null) {
-            builder.setTimezone(ZoneId.of(tz));
-        }
-        if (match != null) {
-            builder.setOnMatch(match);
-        }
-        if (mismatch != null) {
-            builder.setOnMismatch(mismatch);
-        }
-        return builder.get();
-    }
-
     private static LocalTime parseTimestamp(final String timestamp, final 
LocalTime defaultValue) {
         if (timestamp == null) {
             return defaultValue;
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
index 37b3d3f647..fa293f5f6f 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
@@ -63,15 +63,6 @@ public class ThreadContextDataInjector {
 
     private static final List<ContextDataProvider> SERVICE_PROVIDERS = 
getServiceProviders();
 
-    /**
-     * Previously this method allowed ContextDataProviders to be loaded 
eagerly, now they
-     * are loaded when this class is initialized.
-     *
-     * @deprecated no-op
-     */
-    @Deprecated
-    public static void initServiceProviders() {}
-
     private static List<ContextDataProvider> getServiceProviders() {
         final List<ContextDataProvider> providers = new ArrayList<>();
         final List<ContextDataProvider> services = 
ServiceRegistry.getInstance()
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
index 39064163a7..5c1587beb9 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
 import org.apache.logging.log4j.core.impl.LogEventFactory;
 import org.apache.logging.log4j.core.util.Constants;
-import org.apache.logging.log4j.core.util.StringEncoder;
 import org.apache.logging.log4j.plugins.PluginAttribute;
 import org.apache.logging.log4j.plugins.PluginElement;
 import org.apache.logging.log4j.spi.AbstractLogger;
@@ -246,7 +245,8 @@ public abstract class AbstractStringLayout extends 
AbstractLayout {
         if (serializable == null) {
             return defaultValue;
         }
-        return StringEncoder.toBytes(serializable, getCharset());
+        final Charset charset = getCharset();
+        return serializable.getBytes(charset != null ? charset : 
Charset.defaultCharset());
     }
 
     protected String serializeToString(final Serializer serializer) {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
deleted file mode 100644
index 6969c7e99b..0000000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ByteBufferDestinationHelper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.core.layout;
-
-import java.nio.ByteBuffer;
-
-/**
- * Helper class for ByteBufferDestination implementors.
- *
- * @since 2.9 (see LOG4J2-1874)
- * @deprecated use methods on ByteBufferDestination directly
- */
-@Deprecated(since = "3.0.0")
-public final class ByteBufferDestinationHelper {
-
-    private ByteBufferDestinationHelper() {
-    }
-
-    /**
-     * Writes the specified data to the specified destination. Doesn't 
synchronize on the destination object. The helper
-     * method for {@link ByteBufferDestination#writeBytes(ByteBuffer)} 
implementations.
-     *
-     * @param source        the data to write
-     * @param destination the {@code ByteBufferDestination} to write to
-     * @deprecated use {@link 
ByteBufferDestination#unsynchronizedWrite(ByteBuffer)}
-     */
-    @Deprecated(since = "3.0.0")
-    public static void writeToUnsynchronized(final ByteBuffer source, final 
ByteBufferDestination destination) {
-        destination.unsynchronizedWrite(source);
-    }
-
-    /**
-     * Writes the specified data to the specified destination. Doesn't 
synchronize on the destination object. The helper
-     * method for {@link ByteBufferDestination#writeBytes(byte[], int, int)} 
implementations.
-     *
-     * @param data        the data to write
-     * @param offset      where to start in the specified data array
-     * @param length      the number of bytes to write
-     * @param destination the {@code ByteBufferDestination} to write to
-     * @deprecated use {@link 
ByteBufferDestination#unsynchronizedWrite(byte[], int, int)}
-     */
-    @Deprecated(since = "3.0.0")
-    public static void writeToUnsynchronized(final byte[] data, final int 
offset, final int length,
-            final ByteBufferDestination destination) {
-        destination.unsynchronizedWrite(data, offset, length);
-    }
-}
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LevelPatternSelector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LevelPatternSelector.java
index 35e31a0959..82095f7691 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LevelPatternSelector.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/LevelPatternSelector.java
@@ -24,14 +24,14 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory;
-import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.pattern.PatternFormatter;
 import org.apache.logging.log4j.core.pattern.PatternParser;
 import org.apache.logging.log4j.plugins.Configurable;
+import org.apache.logging.log4j.plugins.Factory;
+import org.apache.logging.log4j.plugins.Inject;
 import org.apache.logging.log4j.plugins.Plugin;
+import org.apache.logging.log4j.plugins.PluginBuilderAttribute;
+import org.apache.logging.log4j.plugins.PluginElement;
 import org.apache.logging.log4j.status.StatusLogger;
 
 /**
@@ -44,24 +44,23 @@ public class LevelPatternSelector implements 
PatternSelector{
     /**
      * Custom MarkerPatternSelector builder. Use the {@link 
LevelPatternSelector#newBuilder() builder factory method} to create this.
      */
-    public static class Builder implements 
org.apache.logging.log4j.core.util.Builder<LevelPatternSelector> {
+    public static class Builder implements 
org.apache.logging.log4j.plugins.util.Builder<LevelPatternSelector> {
 
         @PluginElement("PatternMatch")
         private PatternMatch[] properties;
 
-        @PluginBuilderAttribute("defaultPattern")
+        @PluginBuilderAttribute
         private String defaultPattern;
 
-        @PluginBuilderAttribute(value = "alwaysWriteExceptions")
+        @PluginBuilderAttribute
         private boolean alwaysWriteExceptions = true;
 
-        @PluginBuilderAttribute(value = "disableAnsi")
+        @PluginBuilderAttribute
         private boolean disableAnsi;
 
-        @PluginBuilderAttribute(value = "noConsoleNoAnsi")
+        @PluginBuilderAttribute
         private boolean noConsoleNoAnsi;
 
-        @PluginConfiguration
         private Configuration configuration;
 
         @Override
@@ -102,6 +101,7 @@ public class LevelPatternSelector implements 
PatternSelector{
             return this;
         }
 
+        @Inject
         public Builder setConfiguration(final Configuration configuration) {
             this.configuration = configuration;
             return this;
@@ -121,16 +121,6 @@ public class LevelPatternSelector implements 
PatternSelector{
 
     private final boolean requiresLocation;
 
-    /**
-     * @deprecated Use {@link #newBuilder()} instead. This will be private in 
a future version.
-     */
-    @Deprecated
-    public LevelPatternSelector(final PatternMatch[] properties, final String 
defaultPattern,
-                                 final boolean alwaysWriteExceptions, final 
boolean noConsoleNoAnsi,
-                                 final Configuration config) {
-        this(properties, defaultPattern, alwaysWriteExceptions, false, 
noConsoleNoAnsi, config);
-    }
-
     private LevelPatternSelector(final PatternMatch[] properties, final String 
defaultPattern,
                                  final boolean alwaysWriteExceptions, final 
boolean disableAnsi,
                                  final boolean noConsoleNoAnsi, final 
Configuration config) {
@@ -189,37 +179,11 @@ public class LevelPatternSelector implements 
PatternSelector{
      *
      * @return a ScriptPatternSelector builder.
      */
-    @PluginBuilderFactory
+    @Factory
     public static Builder newBuilder() {
         return new Builder();
     }
 
-    /**
-     * Deprecated, use {@link #newBuilder()} instead.
-     * @param properties
-     * @param defaultPattern
-     * @param alwaysWriteExceptions
-     * @param noConsoleNoAnsi
-     * @param configuration
-     * @return a new MarkerPatternSelector.
-     * @deprecated Use {@link #newBuilder()} instead.
-     */
-    @Deprecated
-    public static LevelPatternSelector createSelector(
-            final PatternMatch[] properties,
-            final String defaultPattern,
-            final boolean alwaysWriteExceptions,
-            final boolean noConsoleNoAnsi,
-            final Configuration configuration) {
-        final Builder builder = newBuilder();
-        builder.setProperties(properties);
-        builder.setDefaultPattern(defaultPattern);
-        builder.setAlwaysWriteExceptions(alwaysWriteExceptions);
-        builder.setNoConsoleNoAnsi(noConsoleNoAnsi);
-        builder.setConfiguration(configuration);
-        return builder.build();
-    }
-
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
index 880072c860..3785e71fc2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
@@ -159,20 +159,6 @@ public class TextEncoderHelper {
         });
     }
 
-    /**
-     * For testing purposes only.
-     */
-    @Deprecated
-    public static void encodeText(final CharsetEncoder charsetEncoder, final 
CharBuffer charBuf,
-            final ByteBufferDestination destination) {
-        charsetEncoder.reset();
-        destination.withLock(() -> {
-            ByteBuffer byteBuf = destination.getByteBuffer();
-            byteBuf = encodeAsMuchAsPossible(charsetEncoder, charBuf, true, 
destination, byteBuf);
-            flushRemainingBytes(charsetEncoder, destination, byteBuf);
-        });
-    }
-
     /**
      * Continues to write the contents of the ByteBuffer to the destination 
and encode more of the CharBuffer text
      * into the ByteBuffer until the remaining encoded text fit into the 
ByteBuffer, at which point the ByteBuffer
@@ -213,19 +199,6 @@ public class TextEncoderHelper {
         }
     }
 
-    private static ByteBuffer encodeAsMuchAsPossible(final CharsetEncoder 
charsetEncoder, final CharBuffer charBuf,
-            final boolean endOfInput, final ByteBufferDestination destination, 
ByteBuffer temp) {
-        CoderResult result;
-        do {
-            result = charsetEncoder.encode(charBuf, temp, endOfInput);
-            temp = drainIfByteBufferFull(destination, temp, result);
-        } while (result.isOverflow()); // byte buffer has been drained: retry
-        if (!result.isUnderflow()) { // we should have fully read the char 
buffer contents
-            throwException(result);
-        }
-        return temp;
-    }
-
     /**
      * If the CoderResult indicates the ByteBuffer is full, synchronize on the 
destination and write the content
      * of the ByteBuffer to the destination. If the specified ByteBuffer is 
owned by the destination, we have
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
index ebbe0ac7f3..685457ec2d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Source.java
@@ -133,18 +133,6 @@ public class Source {
         this.file = toFile(normUri);
     }
 
-    /**
-     * Constructs a new {@code Source} from the specified URI.
-     *
-     * @param uri the URI where the input stream originated
-     * @param lastModified Not used.
-     * @deprecated Use {@link Source#Source(URI)}.
-     */
-    @Deprecated
-    public Source(final URI uri, final long lastModified) {
-        this(uri);
-    }
-
     /**
      * Constructs a new {@code Source} from the specified URL.
      *
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
deleted file mode 100644
index 5a61db64b8..0000000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.core.util;
-
-import java.nio.charset.Charset;
-
-/**
- * Encodes Strings to bytes.
- *
- * @since 2.5
- */
-public final class StringEncoder {
-
-    private StringEncoder() {
-    }
-
-    /**
-     * Converts a String to a byte[].
-     *
-     * @param str if null, return null.
-     * @param charset if null, use the default charset.
-     * @return a byte[]
-     */
-    public static byte[] toBytes(final String str, final Charset charset) {
-        if (str != null) {
-            return str.getBytes(charset != null ? charset : 
Charset.defaultCharset());
-        }
-        return null;
-    }
-
-    /**
-     * Prefer standard {@link String#getBytes(Charset)} which performs better 
in Java 8 and beyond.
-     * Encodes the specified char sequence by casting each character to a byte.
-     *
-     * @param s the char sequence to encode
-     * @return the encoded String
-     * @see <a 
href="https://issues.apache.org/jira/browse/LOG4J2-1151";>LOG4J2-1151</a>
-     * @deprecated No longer necessary given better performance in Java 8
-     */
-    @Deprecated
-    public static byte[] encodeSingleByteChars(final CharSequence s) {
-        final int length = s.length();
-        final byte[] result = new byte[length];
-        encodeString(s, 0, length, result);
-        return result;
-    }
-
-    // LOG4J2-1151
-    /**
-     * Prefer standard {@link String#getBytes(Charset)} which performs better 
in Java 8 and beyond.
-     *
-     * Implementation note: this is the fast path. If the char array contains 
only ISO-8859-1 characters, all the work
-     * will be done here.
-     *
-     * @deprecated No longer necessary given better performance in Java 8
-     */
-    @Deprecated
-    public static int encodeIsoChars(final CharSequence charArray, int 
charIndex, final byte[] byteArray, int byteIndex, final int length) {
-        int i = 0;
-        for (; i < length; i++) {
-            final char c = charArray.charAt(charIndex++);
-            if (c > 255) {
-                break;
-            }
-            byteArray[(byteIndex++)] = ((byte) c);
-        }
-        return i;
-    }
-
-    // LOG4J2-1151
-
-    /**
-     * Prefer standard {@link String#getBytes(Charset)} which performs better 
in Java 8 and beyond.
-     * @deprecated No longer necessary given better performance in Java 8
-     */
-    @Deprecated
-    public static int encodeString(final CharSequence charArray, final int 
charOffset, final int charLength, final byte[] byteArray) {
-        int byteOffset = 0;
-        int length = Math.min(charLength, byteArray.length);
-        int charDoneIndex = charOffset + length;
-        int currentCharOffset = charOffset;
-        int currentCharLength = charLength;
-        while (currentCharOffset < charDoneIndex) {
-            final int done = encodeIsoChars(charArray, currentCharOffset, 
byteArray, byteOffset, length);
-            currentCharOffset += done;
-            byteOffset += done;
-            if (done != length) {
-                final char c = charArray.charAt(currentCharOffset++);
-                if ((Character.isHighSurrogate(c)) && (currentCharOffset < 
charDoneIndex)
-                        && 
(Character.isLowSurrogate(charArray.charAt(currentCharOffset)))) {
-                    if (currentCharLength > byteArray.length) {
-                        charDoneIndex++;
-                        currentCharLength--;
-                    }
-                    currentCharOffset++;
-                }
-                byteArray[(byteOffset++)] = '?';
-                length = Math.min(charDoneIndex - currentCharOffset, 
byteArray.length - byteOffset);
-            }
-        }
-        return byteOffset;
-    }
-}
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
index 37f477b707..9ed1f2dc5a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
@@ -35,7 +35,6 @@ import aQute.bnd.annotation.Resolution;
 import aQute.bnd.annotation.spi.ServiceConsumer;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.AbstractLifeCycle;
-import org.apache.logging.log4j.core.config.ConfigurationFileWatcher;
 import org.apache.logging.log4j.core.config.ConfigurationScheduler;
 import org.apache.logging.log4j.plugins.Inject;
 import org.apache.logging.log4j.plugins.Singleton;
@@ -177,24 +176,6 @@ public class WatchManager extends AbstractLifeCycle {
         return this.intervalSeconds;
     }
 
-    /**
-     * Returns a Map of the file watchers.
-     *
-     * @return A Map of the file watchers.
-     * @deprecated use getConfigurationWatchers.
-     */
-    public Map<File, FileWatcher> getWatchers() {
-        final Map<File, FileWatcher> map = new HashMap<>(watchers.size());
-        for (final Map.Entry<Source, ConfigurationMonitor> entry : 
watchers.entrySet()) {
-            if (entry.getValue().getWatcher() instanceof 
ConfigurationFileWatcher) {
-                map.put(entry.getKey().getFile(), (FileWatcher) 
entry.getValue().getWatcher());
-            } else {
-                map.put(entry.getKey().getFile(), new 
WrappedFileWatcher((FileWatcher) entry.getValue().getWatcher()));
-            }
-        }
-        return map;
-    }
-
     public boolean hasEventListeners() {
         return eventServiceList.size() > 0;
     }
diff --git 
a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java
 
b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java
index 6ce1ff07fa..399530c579 100644
--- 
a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java
+++ 
b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java
@@ -61,7 +61,7 @@ public enum GcFreeLoggingTestUtil {
         System.setProperty(LoggingSystemProperty.IS_WEBAPP.getSystemKey(), 
"false");
         System.setProperty(Log4jPropertyKey.CONFIG_LOCATION.getSystemKey(), 
configurationFile);
 
-        assertTrue(isThreadLocalsEnabled(), "Constants.ENABLE_THREADLOCALS");
+        assertTrue(isThreadLocalsEnabled(), 
"Constants.isThreadLocalsEnabled()");
         assertTrue(Constants.ENABLE_DIRECT_ENCODERS, 
"Constants.ENABLE_DIRECT_ENCODERS");
         assertFalse(isWebApp(), "Constants.isWebApp()");
 
diff --git 
a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
 
b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
index 6c48e0c355..1845d26453 100644
--- 
a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
+++ 
b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
@@ -273,18 +273,6 @@ public class SmtpManager extends AbstractManager {
         return mp;
     }
 
-    /**
-     * @deprecated Please use the {@link #sendMultipartMessage(MimeMessage, 
MimeMultipart, String)} method instead.
-     */
-    @Deprecated
-    protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp) throws MessagingException {
-        synchronized (msg) {
-            msg.setContent(mp);
-            msg.setSentDate(new Date());
-            Transport.send(msg);
-        }
-    }
-
     protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp, final String subject) throws MessagingException {
         synchronized (msg) {
             msg.setContent(mp);
diff --git 
a/log4j-jdbc-dbcp2/src/main/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSource.java
 
b/log4j-jdbc-dbcp2/src/main/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSource.java
index 8d4d511aa0..c14b7bcabd 100644
--- 
a/log4j-jdbc-dbcp2/src/main/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSource.java
+++ 
b/log4j-jdbc-dbcp2/src/main/java/org/apache/logging/log4j/dbcp2/appender/PoolingDriverConnectionSource.java
@@ -105,18 +105,6 @@ public final class PoolingDriverConnectionSource extends 
AbstractDriverManagerCo
 
     private final String poolName;
 
-    /**
-     * @deprecated Use {@link #newPoolingDriverConnectionSourceBuilder()}.
-     */
-    @Deprecated
-    public PoolingDriverConnectionSource(final String driverClassName, final 
String connectionString,
-            final char[] userName, final char[] password, final Property[] 
properties, final String poolName)
-            throws SQLException {
-        super(driverClassName, connectionString, URL_PREFIX + poolName, 
userName, password, properties);
-        this.poolName = poolName;
-        setupDriver(connectionString, null);
-    }
-
     private PoolingDriverConnectionSource(final String driverClassName, final 
String connectionString,
             final char[] userName, final char[] password, final Property[] 
properties, final String poolName,
             final PoolableConnectionFactoryConfig 
poolableConnectionFactoryConfig)
diff --git 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcAppender.java
 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcAppender.java
index b04dd15526..7276c1cd01 100644
--- 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcAppender.java
+++ 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcAppender.java
@@ -92,7 +92,7 @@ public final class JdbcAppender extends 
AbstractDatabaseAppender<JdbcDatabaseMan
                     + Arrays.toString(columnMappings) + '}';
             final JdbcDatabaseManager manager = 
JdbcDatabaseManager.getManager(managerName, bufferSize, getLayout(),
                     connectionSource, tableName, columnConfigs, 
columnMappings, immediateFail, reconnectIntervalMillis,
-                    truncateStrings);
+                    truncateStrings, getConfiguration());
             if (manager == null) {
                 return null;
             }
diff --git 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
index f010dc11f5..e55ac88d14 100644
--- 
a/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
+++ 
b/log4j-jdbc/src/main/java/org/apache/logging/log4j/jdbc/appender/JdbcDatabaseManager.java
@@ -46,6 +46,7 @@ import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager;
 import org.apache.logging.log4j.core.appender.db.ColumnMapping;
 import org.apache.logging.log4j.core.appender.db.DbAppenderLoggingException;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.util.Closer;
 import org.apache.logging.log4j.core.util.Log4jThread;
 import org.apache.logging.log4j.jdbc.convert.DateTypeConverter;
@@ -76,10 +77,10 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
         private final boolean truncateStrings;
 
         protected FactoryData(final int bufferSize, final Layout layout,
-                final ConnectionSource connectionSource, final String 
tableName, final ColumnConfig[] columnConfigs,
-                final ColumnMapping[] columnMappings, final boolean 
immediateFail, final long reconnectIntervalMillis,
-                final boolean truncateStrings) {
-            super(bufferSize, layout);
+                              final ConnectionSource connectionSource, final 
String tableName, final ColumnConfig[] columnConfigs,
+                              final ColumnMapping[] columnMappings, final 
boolean immediateFail, final long reconnectIntervalMillis,
+                              final boolean truncateStrings, final 
Configuration configuration) {
+            super(configuration, bufferSize, layout);
             this.connectionSource = connectionSource;
             this.tableName = tableName;
             this.columnConfigs = columnConfigs;
@@ -393,9 +394,10 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
     public static JdbcDatabaseManager getManager(final String name, final int 
bufferSize,
                                                  final Layout layout, final 
ConnectionSource connectionSource,
                                                  final String tableName, final 
ColumnConfig[] columnConfigs, final ColumnMapping[] columnMappings,
-                                                 final boolean immediateFail, 
final long reconnectIntervalMillis, final boolean truncateStrings) {
+                                                 final boolean immediateFail, 
final long reconnectIntervalMillis, final boolean truncateStrings,
+                                                 final Configuration 
configuration) {
         return getManager(name, new FactoryData(bufferSize, layout, 
connectionSource, tableName, columnConfigs,
-                columnMappings, immediateFail, reconnectIntervalMillis, 
truncateStrings), getFactory());
+                columnMappings, immediateFail, reconnectIntervalMillis, 
truncateStrings, configuration), getFactory());
     }
 
     // NOTE: prepared statements are prepared in this order: column mappings, 
then column configs
@@ -410,7 +412,7 @@ public final class JdbcDatabaseManager extends 
AbstractDatabaseManager {
 
     private JdbcDatabaseManager(final String name, final String sqlStatement, 
final List<ColumnConfig> columnConfigs,
             final FactoryData factoryData) {
-        super(name, factoryData.getBufferSize());
+        super(name, factoryData.getBufferSize(), factoryData.getLayout(), 
factoryData.getConfiguration());
         this.sqlStatement = sqlStatement;
         this.columnConfigs = columnConfigs;
         this.factoryData = factoryData;
diff --git 
a/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaAppender.java
 
b/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaAppender.java
index e64d476634..615117b876 100644
--- 
a/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaAppender.java
+++ 
b/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaAppender.java
@@ -23,6 +23,7 @@ import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.AbstractAppender;
 import org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.util.Booleans;
 import org.apache.logging.log4j.plugins.Configurable;
@@ -78,7 +79,8 @@ public final class JpaAppender extends 
AbstractDatabaseAppender<JpaDatabaseManag
             @PluginElement final Filter filter,
             @PluginAttribute final String bufferSize,
             @PluginAttribute final String entityClassName,
-            @PluginAttribute final String persistenceUnitName) {
+            @PluginAttribute final String persistenceUnitName,
+            final Configuration configuration) {
         if (Strings.isEmpty(entityClassName) || 
Strings.isEmpty(persistenceUnitName)) {
             LOGGER.error("Attributes entityClassName and persistenceUnitName 
are required for JPA Appender.");
             return null;
@@ -106,7 +108,7 @@ public final class JpaAppender extends 
AbstractDatabaseAppender<JpaDatabaseManag
                     + ", persistenceUnitName=" + persistenceUnitName + ", 
entityClass=" + entityClass.getName() + '}';
 
             final JpaDatabaseManager manager = 
JpaDatabaseManager.getJPADatabaseManager(
-                    managerName, bufferSizeInt, entityClass, 
entityConstructor, persistenceUnitName
+                    managerName, bufferSizeInt, entityClass, 
entityConstructor, persistenceUnitName, configuration
             );
             if (manager == null) {
                 return null;
diff --git 
a/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaDatabaseManager.java
 
b/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaDatabaseManager.java
index ce2b6fd2eb..d9dbcece10 100644
--- 
a/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaDatabaseManager.java
+++ 
b/log4j-jpa/src/main/java/org/apache/logging/log4j/jpa/appender/JpaDatabaseManager.java
@@ -27,6 +27,7 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.appender.AppenderLoggingException;
 import org.apache.logging.log4j.core.appender.ManagerFactory;
 import org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager;
+import org.apache.logging.log4j.core.config.Configuration;
 
 /**
  * An {@link AbstractDatabaseManager} implementation for relational databases 
accessed via JPA.
@@ -46,8 +47,8 @@ public final class JpaDatabaseManager extends 
AbstractDatabaseManager {
     private JpaDatabaseManager(final String name, final int bufferSize,
                                final Class<? extends 
AbstractLogEventWrapperEntity> entityClass,
                                final Constructor<? extends 
AbstractLogEventWrapperEntity> entityConstructor,
-                               final String persistenceUnitName) {
-        super(name, bufferSize);
+                               final String persistenceUnitName, final 
Configuration configuration) {
+        super(name, bufferSize, null, configuration);
         this.entityClassName = entityClass.getName();
         this.entityConstructor = entityConstructor;
         this.persistenceUnitName = persistenceUnitName;
@@ -153,10 +154,11 @@ public final class JpaDatabaseManager extends 
AbstractDatabaseManager {
                                                                    entityClass,
                                                            final Constructor<? 
extends AbstractLogEventWrapperEntity>
                                                                    
entityConstructor,
-                                                           final String 
persistenceUnitName) {
+                                                           final String 
persistenceUnitName,
+                                                           final Configuration 
configuration) {
 
         return AbstractDatabaseManager.getManager(
-                name, new FactoryData(bufferSize, entityClass, 
entityConstructor, persistenceUnitName), FACTORY
+                name, new FactoryData(bufferSize, entityClass, 
entityConstructor, persistenceUnitName, configuration), FACTORY
         );
     }
 
@@ -170,8 +172,8 @@ public final class JpaDatabaseManager extends 
AbstractDatabaseManager {
 
         protected FactoryData(final int bufferSize, final Class<? extends 
AbstractLogEventWrapperEntity> entityClass,
                               final Constructor<? extends 
AbstractLogEventWrapperEntity> entityConstructor,
-                              final String persistenceUnitName) {
-            super(bufferSize, null);
+                              final String persistenceUnitName, final 
Configuration configuration) {
+            super(configuration, bufferSize, null);
 
             this.entityClass = entityClass;
             this.entityConstructor = entityConstructor;
@@ -186,7 +188,8 @@ public final class JpaDatabaseManager extends 
AbstractDatabaseManager {
         @Override
         public JpaDatabaseManager createManager(final String name, final 
FactoryData data) {
             return new JpaDatabaseManager(
-                    name, data.getBufferSize(), data.entityClass, 
data.entityConstructor, data.persistenceUnitName
+                    name, data.getBufferSize(), data.entityClass, 
data.entityConstructor, data.persistenceUnitName,
+                    data.getConfiguration()
             );
         }
     }
diff --git 
a/log4j-jpa/src/test/java/org/apache/logging/log4j/jpa/appender/JpaHsqldbAppenderTest.java
 
b/log4j-jpa/src/test/java/org/apache/logging/log4j/jpa/appender/JpaHsqldbAppenderTest.java
index 69fd464c22..797fdab8ee 100644
--- 
a/log4j-jpa/src/test/java/org/apache/logging/log4j/jpa/appender/JpaHsqldbAppenderTest.java
+++ 
b/log4j-jpa/src/test/java/org/apache/logging/log4j/jpa/appender/JpaHsqldbAppenderTest.java
@@ -22,6 +22,8 @@ import java.sql.SQLException;
 import java.sql.Statement;
 
 import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.NullConfiguration;
 import org.apache.logging.log4j.core.test.categories.Appenders;
 import org.apache.logging.log4j.util.Strings;
 import org.junit.Test;
@@ -34,6 +36,8 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
     private static final String USER_ID = "sa";
     private static final String PASSWORD = Strings.EMPTY;
 
+    private final Configuration configuration = new NullConfiguration();
+
     public JpaHsqldbAppenderTest() {
         super("hsqldb");
     }
@@ -62,7 +66,7 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
 
     @Test
     public void testNoEntityClassName() {
-        final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null, null, "jpaAppenderTestUnit");
+        final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null, null, "jpaAppenderTestUnit", configuration);
 
         assertNull("The appender should be null.", appender);
     }
@@ -70,7 +74,7 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
     @Test
     public void testNoPersistenceUnitName() {
         final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null, TestBaseEntity.class.getName(),
-                null);
+                null, configuration);
 
         assertNull("The appender should be null.", appender);
     }
@@ -78,7 +82,7 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
     @Test
     public void testBadEntityClassName() {
         final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null, "com.foo.Bar",
-                "jpaAppenderTestUnit");
+                "jpaAppenderTestUnit", configuration);
 
         assertNull("The appender should be null.", appender);
     }
@@ -86,7 +90,7 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
     @Test
     public void testNonLogEventEntity() {
         final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null, Object.class.getName(),
-                "jpaAppenderTestUnit");
+                "jpaAppenderTestUnit", configuration);
 
         assertNull("The appender should be null.", appender);
     }
@@ -94,7 +98,7 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
     @Test
     public void testBadConstructorEntity01() {
         final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null,
-                BadConstructorEntity1.class.getName(), "jpaAppenderTestUnit");
+                BadConstructorEntity1.class.getName(), "jpaAppenderTestUnit", 
configuration);
 
         assertNull("The appender should be null.", appender);
     }
@@ -102,7 +106,7 @@ public class JpaHsqldbAppenderTest extends 
AbstractJpaAppenderTest {
     @Test
     public void testBadConstructorEntity02() {
         final JpaAppender appender = JpaAppender.createAppender("name", null, 
null, null,
-                BadConstructorEntity2.class.getName(), "jpaAppenderTestUnit");
+                BadConstructorEntity2.class.getName(), "jpaAppenderTestUnit", 
configuration);
 
         assertNull("The appender should be null.", appender);
     }
diff --git 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
index 6a732ecc6d..059c18da35 100644
--- 
a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
+++ 
b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayout.java
@@ -35,7 +35,6 @@ import 
org.apache.logging.log4j.core.layout.ByteBufferDestination;
 import org.apache.logging.log4j.core.layout.Encoder;
 import org.apache.logging.log4j.core.layout.TextEncoderHelper;
 import org.apache.logging.log4j.core.util.Constants;
-import org.apache.logging.log4j.core.util.StringEncoder;
 import org.apache.logging.log4j.layout.template.json.resolver.*;
 import org.apache.logging.log4j.layout.template.json.util.JsonWriter;
 import org.apache.logging.log4j.layout.template.json.util.Recycler;
@@ -258,7 +257,10 @@ public class JsonTemplateLayout implements StringLayout {
     @Override
     public byte[] toByteArray(final LogEvent event) {
         final String eventJson = toSerializable(event);
-        return StringEncoder.toBytes(eventJson, charset);
+        if (eventJson != null) {
+            return eventJson.getBytes(charset != null ? charset : 
Charset.defaultCharset());
+        }
+        return null;
     }
 
     @Override
diff --git 
a/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
 
b/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
index e3cdc7c9a5..530a1f6fd8 100644
--- 
a/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
+++ 
b/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
@@ -273,23 +273,12 @@ public class SmtpManager extends AbstractManager {
         return mp;
     }
 
-    /**
-     * @deprecated Please use the {@link #sendMultipartMessage(MimeMessage, 
MimeMultipart, String)} method instead.
-     */
-    @Deprecated
-    protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp) throws MessagingException {
-        synchronized (msg) {
-            msg.setContent(mp);
-            msg.setSentDate(new Date());
-            Transport.send(msg);
-        }
-    }
-
     @SuppressFBWarnings(
             value = "SMTP_HEADER_INJECTION",
             justification = "False positive, since MimeMessage#setSubject does 
actually escape new lines."
     )
-    protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp, final String subject) throws MessagingException {synchronized 
(msg) {
+    protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp, final String subject) throws MessagingException {
+        synchronized (msg) {
             msg.setContent(mp);
             msg.setSentDate(new Date());
             msg.setSubject(subject);
diff --git 
a/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLogger.java 
b/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLogger.java
index e6f3a69370..c34c2f281f 100644
--- a/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLogger.java
+++ b/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/SLF4JLogger.java
@@ -308,7 +308,7 @@ public class SLF4JLogger extends AbstractLogger {
     @Override
     protected LogBuilder getLogBuilder(final Level level) {
         final SLF4JLogBuilder builder = logBuilder.get();
-        return Constants.ENABLE_THREADLOCALS && !builder.isInUse() ? 
builder.reset(this, level)
+        return Constants.isThreadLocalsEnabled() && !builder.isInUse() ? 
builder.reset(this, level)
                 : new SLF4JLogBuilder(this, level);
     }
 
diff --git 
a/log4j-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java
 
b/log4j-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java
deleted file mode 100644
index c6706f1ea7..0000000000
--- 
a/log4j-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to you under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.logging.log4j.web;
-
-import java.util.Objects;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.logging.log4j.ThreadContext;
-
-@Deprecated // use WebLookup
-public class ServletRequestThreadContext {
-
-    public static void put(final String key, final ServletRequest 
servletRequest) {
-        put(key, "RemoteAddr", servletRequest.getRemoteAddr());
-        put(key, "RemoteHost", servletRequest.getRemoteHost());
-        put(key, "RemotePort", servletRequest.getRemotePort());
-    }
-
-    public static void put(final String key, final String field, final Object 
value) {
-        put(key + "." + field, Objects.toString(value));
-    }
-
-    public static void put(final String key, final String value) {
-        ThreadContext.put(key, value);
-    }
-
-    public static void put(final String key, final HttpServletRequest 
servletRequest) {
-        put(key, (ServletRequest) servletRequest);
-    }
-}

Reply via email to