You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by on...@apache.org on 2019/10/06 03:29:18 UTC

[geode] branch develop updated: Revert "GEODE-7177: Extract LogService to a separate submodule"

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

onichols pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new d63638e  Revert "GEODE-7177: Extract LogService to a separate submodule"
d63638e is described below

commit d63638e4654bc6c71a232838b745dec6ef476ec9
Author: Owen Nichols <on...@pivotal.io>
AuthorDate: Sat Oct 5 20:27:26 2019 -0700

    Revert "GEODE-7177: Extract LogService to a separate submodule"
    
    This reverts commit 0e3f884caa8af76e4db20d71e759838c39856455.
---
 .../src/test/resources/expected-pom.xml            |   6 --
 .../release/session/bin/modify_war                 |   1 -
 .../geode-modules-session-internal/build.gradle    |   1 -
 extensions/geode-modules-session/build.gradle      |   1 -
 extensions/geode-modules-test/build.gradle         |   2 -
 extensions/geode-modules-tomcat8/build.gradle      |   1 -
 extensions/geode-modules/build.gradle              |   1 -
 geode-assembly/build.gradle                        |   6 +-
 geode-assembly/geode-assembly-test/build.gradle    |   1 -
 .../apache/geode/session/tests/TomcatInstall.java  |   2 +-
 .../integrationTest/resources/assembly_content.txt |   1 -
 .../resources/dependency_classpath.txt             |   1 -
 geode-connectors/build.gradle                      |   1 -
 .../src/test/resources/expected-pom.xml            |   5 -
 geode-core/build.gradle                            |   1 -
 .../main/java/org/apache/geode/cache/Region.java   |   3 +-
 .../geode/cache/client/internal/PoolImpl.java      |   4 +-
 .../internal/ClusterOperationExecutors.java        |  26 +++--
 .../internal/InternalDistributedSystem.java        |   5 +-
 .../distributed/internal/tcpserver/TcpServer.java  |   4 +-
 .../geode/internal/cache}/EntriesCollection.java   |   7 +-
 .../apache/geode/internal/cache/EntriesSet.java    |   1 -
 .../apache/geode/internal/cache/ExpiryTask.java    |   4 +-
 .../geode/internal/cache/GemFireCacheImpl.java     |   3 +-
 .../cache/control/InternalResourceManager.java     |   3 +-
 .../geode/internal/cache/eviction/HeapEvictor.java |   4 +-
 .../internal/cache/tier/sockets/AcceptorImpl.java  |  11 +-
 .../apache/geode/internal/logging/LogService.java  |  19 +++-
 ...LoggingExecutors.java => LoggingExecutors.java} |  92 ++++++++++++++++-
 .../geode/internal/logging/LoggingThread.java      |  12 +--
 .../internal/logging/LoggingThreadFactory.java     |   0
 .../logging/LoggingUncaughtExceptionHandler.java   |  25 ++---
 .../apache/geode/internal/tcp/ConnectionTable.java |   3 +-
 .../logging/internal/SimpleLoggingProvider.java    |   7 ++
 .../logging/internal/spi/LoggingProvider.java      |  11 ++
 .../MembershipDependenciesJUnitTest.java           |  13 ++-
 .../geode/internal/logging/LogServiceTest.java     |  30 ++----
 .../internal/logging/LoggingThreadFactoryTest.java |   0
 .../geode/internal/logging/LoggingThreadTest.java  |   0
 .../LoggingUncaughtExceptionHandlerTest.java       |  25 ++---
 .../internal/LoggingProviderLoaderTest.java        |  13 ++-
 geode-core/src/test/resources/expected-pom.xml     |   5 -
 geode-cq/build.gradle                              |   1 -
 geode-cq/src/test/resources/expected-pom.xml       |   5 -
 .../tomcat_installing_the_module.html.md.erb       |   2 -
 .../weblogic_setting_up_the_module.html.md.erb     |   1 -
 geode-dunit/build.gradle                           |   1 -
 geode-dunit/src/test/resources/expected-pom.xml    |   5 -
 geode-experimental-driver/build.gradle             |   1 -
 geode-http-service/build.gradle                    |   2 -
 .../src/test/resources/expected-pom.xml            |   5 -
 geode-junit/build.gradle                           |   1 -
 geode-log4j/build.gradle                           |   3 +-
 .../internal/impl/FastLoggerIntegrationTest.java   |   2 +-
 ...FastLoggerWithDefaultConfigIntegrationTest.java |   2 +-
 ...oggingWithDistributedSystemIntegrationTest.java |   2 +-
 .../internal/FastLoggerDisabledLevelBenchmark.java |   2 -
 .../internal/FastLoggerEnabledLevelBenchmark.java  |   2 -
 .../internal/FastLoggerParameterTypeBenchmark.java |   2 -
 .../geode/logging/log4j/internal}/FastLogger.java  |   5 +-
 .../log4j/internal/impl/AppenderContext.java       |  81 +++++++++++++++
 .../log4j/internal/impl/Log4jLoggingProvider.java  |   8 +-
 .../impl}/message/GemFireParameterizedMessage.java |  15 +--
 .../GemFireParameterizedMessageFactory.java        |  14 ++-
 .../geode/internal/logging/LogServiceTest.java     |   4 +-
 .../logging/log4j/internal/FastLoggerTest.java     |   1 -
 geode-log4j/src/test/resources/expected-pom.xml    |  13 +--
 geode-logging/build.gradle                         |  65 ------------
 .../geode/internal/logging/LoggingExecutors.java   | 114 ---------------------
 geode-logging/src/test/resources/expected-pom.xml  |  60 -----------
 geode-lucene/build.gradle                          |   1 -
 geode-lucene/geode-lucene-test/build.gradle        |   1 -
 geode-lucene/src/test/resources/expected-pom.xml   |   5 -
 geode-memcached/build.gradle                       |   1 -
 .../src/test/resources/expected-pom.xml            |   5 -
 geode-old-client-support/build.gradle              |   1 -
 .../src/test/resources/expected-pom.xml            |   5 -
 geode-protobuf/build.gradle                        |   1 -
 .../protocol/protobuf/v1/ProtobufOpsProcessor.java |   2 +-
 .../protocol/protobuf/v1/state/RequireVersion.java |   3 +-
 geode-protobuf/src/test/resources/expected-pom.xml |   5 -
 geode-rebalancer/build.gradle                      |   1 -
 .../src/test/resources/expected-pom.xml            |   5 -
 geode-redis/build.gradle                           |   1 -
 geode-redis/src/test/resources/expected-pom.xml    |   5 -
 geode-wan/build.gradle                             |   1 -
 geode-wan/src/test/resources/expected-pom.xml      |   5 -
 geode-web-api/build.gradle                         |   1 -
 geode-web-management/build.gradle                  |   1 -
 geode-web/build.gradle                             |   3 +-
 settings.gradle                                    |   1 -
 91 files changed, 330 insertions(+), 504 deletions(-)

diff --git a/boms/geode-all-bom/src/test/resources/expected-pom.xml b/boms/geode-all-bom/src/test/resources/expected-pom.xml
index 2b41533..a8b0a0a 100644
--- a/boms/geode-all-bom/src/test/resources/expected-pom.xml
+++ b/boms/geode-all-bom/src/test/resources/expected-pom.xml
@@ -837,12 +837,6 @@
       </dependency>
       <dependency>
         <groupId>org.apache.geode</groupId>
-        <artifactId>geode-logging</artifactId>
-        <version>1.11.0-SNAPSHOT</version>
-        <scope>compile</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.geode</groupId>
         <artifactId>geode-lucene</artifactId>
         <version>1.11.0-SNAPSHOT</version>
         <scope>compile</scope>
diff --git a/extensions/geode-modules-assembly/release/session/bin/modify_war b/extensions/geode-modules-assembly/release/session/bin/modify_war
index 564a5fd..f7f632b 100755
--- a/extensions/geode-modules-assembly/release/session/bin/modify_war
+++ b/extensions/geode-modules-assembly/release/session/bin/modify_war
@@ -262,7 +262,6 @@ SESSION_JAR="${LIB_DIR}/geode-modules-session-${VERSION}.jar"
 
 declare -a OTHER_JARS
 OTHER_JARS=(${GEODE}/lib/geode-core-${VERSION}.jar \
-    ${GEODE}/lib/geode-logging-${VERSION}.jar \
     ${GEODE}/lib/geode-serialization-${VERSION}.jar \
     ${GEODE}/lib/geode-common-${VERSION}.jar \
     ${GEODE}/lib/geode-log4j-${VERSION}.jar \
diff --git a/extensions/geode-modules-session-internal/build.gradle b/extensions/geode-modules-session-internal/build.gradle
index 02bfdf6..deca285 100644
--- a/extensions/geode-modules-session-internal/build.gradle
+++ b/extensions/geode-modules-session-internal/build.gradle
@@ -25,7 +25,6 @@ dependencies {
   compile(platform(project(':boms:geode-all-bom')))
   compile(project(':extensions:geode-modules'))
   compile(project(':geode-core'))
-  implementation(project(':geode-logging'))
 
   compile('javax.servlet:javax.servlet-api')
   compile('mx4j:mx4j')
diff --git a/extensions/geode-modules-session/build.gradle b/extensions/geode-modules-session/build.gradle
index 951e9ae..67f4821 100644
--- a/extensions/geode-modules-session/build.gradle
+++ b/extensions/geode-modules-session/build.gradle
@@ -33,7 +33,6 @@ dependencies {
   integrationTestCompile(project(':geode-dunit')) {
     exclude module: 'geode-core'
   }
-  integrationTestImplementation(project(':geode-logging'))
 
   compile('javax.servlet:javax.servlet-api')
   compile('org.apache.tomcat:servlet-api:' + DependencyConstraints.get('tomcat6.version'))
diff --git a/extensions/geode-modules-test/build.gradle b/extensions/geode-modules-test/build.gradle
index 6d9fef3..e992e64 100644
--- a/extensions/geode-modules-test/build.gradle
+++ b/extensions/geode-modules-test/build.gradle
@@ -28,8 +28,6 @@ dependencies {
     exclude group: 'org.apache.tomcat'
   }
   compile(project(':geode-core'))
-  implementation(project(':geode-logging'))
-
   compile(project(':geode-junit')) {
     exclude module: 'geode-core'
   }
diff --git a/extensions/geode-modules-tomcat8/build.gradle b/extensions/geode-modules-tomcat8/build.gradle
index f8c7730..f6d62b8 100644
--- a/extensions/geode-modules-tomcat8/build.gradle
+++ b/extensions/geode-modules-tomcat8/build.gradle
@@ -27,7 +27,6 @@ dependencies {
   compile(platform(project(':boms:geode-all-bom')))
   distributedTestCompile('junit:junit')
   compile('mx4j:mx4j')
-  distributedTestImplementation(project(':geode-logging'))
   distributedTestCompile('org.httpunit:httpunit')
   distributedTestCompile('org.apache.tomcat:tomcat-jaspic-api:' + DependencyConstraints.get('tomcat8.version'))
   compile(project(':geode-core'))
diff --git a/extensions/geode-modules/build.gradle b/extensions/geode-modules/build.gradle
index 238521d..f7b48ad 100644
--- a/extensions/geode-modules/build.gradle
+++ b/extensions/geode-modules/build.gradle
@@ -25,7 +25,6 @@ evaluationDependsOn(":geode-core")
 
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
   integrationTestCompile(project(':extensions:geode-modules-test')) {
diff --git a/geode-assembly/build.gradle b/geode-assembly/build.gradle
index 0919541..62dc84a 100755
--- a/geode-assembly/build.gradle
+++ b/geode-assembly/build.gradle
@@ -33,7 +33,6 @@ def dependentProjectNames = [
   ':geode-core',
   ':geode-cq',
   ':geode-log4j',
-  ':geode-logging',
   ':geode-lucene',
   ':geode-memcached',
   ':geode-old-client-support',
@@ -163,7 +162,6 @@ dependencies {
   geodeArchives project(':geode-core')
   geodeArchives project(':geode-cq')
   geodeArchives project(':geode-log4j')
-  geodeArchives project(':geode-logging')
   geodeArchives project(':geode-lucene')
   geodeArchives project(':geode-management')
   geodeArchives project(':geode-memcached')
@@ -213,13 +211,11 @@ dependencies {
   integrationTestCompile(project(':geode-assembly:geode-assembly-test'))
   integrationTestCompile('org.apache.httpcomponents:httpclient')
   integrationTestCompile('javax.annotation:javax.annotation-api')
-  integrationTestImplementation(project(':geode-logging'))
 
 
   integrationTestRuntime('io.swagger:swagger-annotations')
 
 
-  distributedTestImplementation(project(':geode-logging'))
   distributedTestImplementation(project(':geode-serialization'))
   distributedTestCompile(project(':geode-core'))
   distributedTestCompile(project(':geode-log4j')) {
@@ -273,7 +269,7 @@ dependencies {
   uiTestRuntime(project(':geode-core'))
   uiTestRuntime('org.seleniumhq.selenium:selenium-chrome-driver')
 
-  upgradeTestImplementation project(':geode-logging')
+
   upgradeTestImplementation project(':geode-serialization')
   upgradeTestCompile(project(':geode-core'))
   upgradeTestCompile(project(':geode-dunit')) {
diff --git a/geode-assembly/geode-assembly-test/build.gradle b/geode-assembly/geode-assembly-test/build.gradle
index afb1ac0..aa02bb0 100755
--- a/geode-assembly/geode-assembly-test/build.gradle
+++ b/geode-assembly/geode-assembly-test/build.gradle
@@ -25,7 +25,6 @@ dependencies {
   compileOnly(project(':extensions:geode-modules-test'))
   compileOnly(project(':geode-core'))
   compileOnly(project(':geode-pulse'))
-  implementation(project(':geode-logging'))
   compileOnly('com.fasterxml.jackson.core:jackson-databind')
   compileOnly('commons-io:commons-io')
   compileOnly('junit:junit')
diff --git a/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java b/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java
index 1a1d555..825d86c 100644
--- a/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java
+++ b/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/session/tests/TomcatInstall.java
@@ -97,7 +97,7 @@ public class TomcatInstall extends ContainerInstall {
    */
   private static final String[] tomcatRequiredJars =
       {"antlr", "commons-io", "commons-lang", "commons-validator", "fastutil", "geode-common",
-          "geode-core", "geode-log4j", "geode-logging", "geode-management", "geode-serialization",
+          "geode-core", "geode-log4j", "geode-management", "geode-serialization",
           "javax.transaction-api", "jgroups", "log4j-api", "log4j-core", "log4j-jul", "micrometer",
           "shiro-core", "jetty-server", "jetty-util", "jetty-http", "jetty-io"};
 
diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index 5b81c9b..eabad85 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -956,7 +956,6 @@ lib/geode-dependencies.jar
 lib/geode-http-service-0.0.0.jar
 lib/geode-jca-0.0.0.rar
 lib/geode-log4j-0.0.0.jar
-lib/geode-logging-0.0.0.jar
 lib/geode-lucene-0.0.0.jar
 lib/geode-management-0.0.0.jar
 lib/geode-memcached-0.0.0.jar
diff --git a/geode-assembly/src/integrationTest/resources/dependency_classpath.txt b/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
index 542a0e5..3681913 100644
--- a/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
+++ b/geode-assembly/src/integrationTest/resources/dependency_classpath.txt
@@ -4,7 +4,6 @@ geode-core-0.0.0.jar
 geode-cq-0.0.0.jar
 geode-http-service-0.0.0.jar
 geode-log4j-0.0.0.jar
-geode-logging-0.0.0.jar
 geode-lucene-0.0.0.jar
 geode-management-0.0.0.jar
 geode-memcached-0.0.0.jar
diff --git a/geode-connectors/build.gradle b/geode-connectors/build.gradle
index 384fa3d..863f434 100644
--- a/geode-connectors/build.gradle
+++ b/geode-connectors/build.gradle
@@ -48,7 +48,6 @@ task downloadJdbcJars(type:Copy) {
 
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
   testCompile(project(':geode-junit')) {
diff --git a/geode-connectors/src/test/resources/expected-pom.xml b/geode-connectors/src/test/resources/expected-pom.xml
index 2d10658..da06b0e 100644
--- a/geode-connectors/src/test/resources/expected-pom.xml
+++ b/geode-connectors/src/test/resources/expected-pom.xml
@@ -120,11 +120,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-core/build.gradle b/geode-core/build.gradle
index cb32f25..15ef289 100755
--- a/geode-core/build.gradle
+++ b/geode-core/build.gradle
@@ -310,7 +310,6 @@ dependencies {
 
   //Geode-common has annotations and other pieces used geode-core
   api(project(':geode-common'))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-unsafe'))
   implementation(project(':geode-serialization'))
 
diff --git a/geode-core/src/main/java/org/apache/geode/cache/Region.java b/geode-core/src/main/java/org/apache/geode/cache/Region.java
index bef22af..6413113 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/Region.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/Region.java
@@ -36,7 +36,6 @@ import org.apache.geode.cache.query.QueryService;
 import org.apache.geode.cache.query.SelectResults;
 import org.apache.geode.cache.query.TypeMismatchException;
 import org.apache.geode.cache.snapshot.RegionSnapshotService;
-import org.apache.geode.internal.logging.EntriesCollection;
 
 /**
  * Manages subregions and cached data. Each region can contain multiple subregions and entries for
@@ -141,7 +140,7 @@ import org.apache.geode.internal.logging.EntriesCollection;
  * @since GemFire 2.0
  */
 
-public interface Region<K, V> extends ConcurrentMap<K, V>, EntriesCollection {
+public interface Region<K, V> extends ConcurrentMap<K, V> {
   /** The region name separator character. */
   char SEPARATOR_CHAR = '/';
 
diff --git a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
index 3dbd99f..8c51619 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/client/internal/PoolImpl.java
@@ -60,9 +60,9 @@ import org.apache.geode.internal.cache.PoolFactoryImpl;
 import org.apache.geode.internal.cache.PoolManagerImpl;
 import org.apache.geode.internal.cache.PoolStats;
 import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.InternalLogWriter;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.monitoring.ThreadsMonitoring;
 import org.apache.geode.internal.statistics.DummyStatisticsFactory;
 
@@ -320,7 +320,7 @@ public class PoolImpl implements InternalPool {
     }
 
     final String timerName = "poolTimer-" + getName() + "-";
-    backgroundProcessor = CoreLoggingExecutors.newScheduledThreadPool(timerName,
+    backgroundProcessor = LoggingExecutors.newScheduledThreadPool(timerName,
         BACKGROUND_TASK_POOL_SIZE, BACKGROUND_TASK_POOL_KEEP_ALIVE, threadMonitoring);
     source.start(this);
     connectionFactory.start(backgroundProcessor);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java
index ce0552f..7414d81 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterOperationExecutors.java
@@ -33,8 +33,8 @@ import org.apache.geode.InternalGemFireError;
 import org.apache.geode.SystemFailure;
 import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.membership.gms.messages.ViewAckMessage;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.logging.log4j.LogMarker;
 import org.apache.geode.internal.monitoring.ThreadsMonitoring;
 import org.apache.geode.internal.monitoring.ThreadsMonitoringImpl;
@@ -220,7 +220,7 @@ public class ClusterOperationExecutors implements OperationExecutors {
                 stats.getSerialQueueHelper());
         poolQueue = serialQueue;
       }
-      serialThread = CoreLoggingExecutors.newSerialThreadPool("Serial Message Processor",
+      serialThread = LoggingExecutors.newSerialThreadPool("Serial Message Processor",
           thread -> stats.incSerialThreadStarts(),
           this::doSerialThread, stats.getSerialProcessorHelper(),
           threadMonitor, poolQueue);
@@ -228,17 +228,17 @@ public class ClusterOperationExecutors implements OperationExecutors {
     }
 
     viewThread =
-        CoreLoggingExecutors.newSerialThreadPoolWithUnlimitedFeed("View Message Processor",
+        LoggingExecutors.newSerialThreadPoolWithUnlimitedFeed("View Message Processor",
             thread -> stats.incViewThreadStarts(), this::doViewThread,
             stats.getViewProcessorHelper(), threadMonitor);
 
     threadPool =
-        CoreLoggingExecutors.newThreadPoolWithFeedStatistics("Pooled Message Processor ",
+        LoggingExecutors.newThreadPoolWithFeedStatistics("Pooled Message Processor ",
             thread -> stats.incProcessingThreadStarts(), this::doProcessingThread,
             MAX_THREADS, stats.getNormalPoolHelper(), threadMonitor,
             INCOMING_QUEUE_LIMIT, stats.getOverflowQueueHelper());
 
-    highPriorityPool = CoreLoggingExecutors.newThreadPoolWithFeedStatistics(
+    highPriorityPool = LoggingExecutors.newThreadPoolWithFeedStatistics(
         "Pooled High Priority Message Processor ",
         thread -> stats.incHighPriorityThreadStarts(), this::doHighPriorityThread,
         MAX_THREADS, stats.getHighPriorityPoolHelper(), threadMonitor,
@@ -252,28 +252,26 @@ public class ClusterOperationExecutors implements OperationExecutors {
       } else {
         poolQueue = new OverflowQueueWithDMStats<>(stats.getWaitingQueueHelper());
       }
-      waitingPool = CoreLoggingExecutors.newThreadPool("Pooled Waiting Message Processor ",
+      waitingPool = LoggingExecutors.newThreadPool("Pooled Waiting Message Processor ",
           thread -> stats.incWaitingThreadStarts(), this::doWaitingThread,
           MAX_WAITING_THREADS, stats.getWaitingPoolHelper(), threadMonitor, poolQueue);
     }
 
     // should this pool using the waiting pool stats?
     prMetaDataCleanupThreadPool =
-        CoreLoggingExecutors.newThreadPoolWithFeedStatistics(
-            "PrMetaData cleanup Message Processor ",
+        LoggingExecutors.newThreadPoolWithFeedStatistics("PrMetaData cleanup Message Processor ",
             thread -> stats.incWaitingThreadStarts(), this::doWaitingThread,
             MAX_PR_META_DATA_CLEANUP_THREADS, stats.getWaitingPoolHelper(), threadMonitor,
             0, stats.getWaitingQueueHelper());
 
     if (MAX_PR_THREADS > 1) {
       partitionedRegionPool =
-          CoreLoggingExecutors.newThreadPoolWithFeedStatistics(
-              "PartitionedRegion Message Processor",
+          LoggingExecutors.newThreadPoolWithFeedStatistics("PartitionedRegion Message Processor",
               thread -> stats.incPartitionedRegionThreadStarts(), this::doPartitionRegionThread,
               MAX_PR_THREADS, stats.getPartitionedRegionPoolHelper(), threadMonitor,
               INCOMING_QUEUE_LIMIT, stats.getPartitionedRegionQueueHelper());
     } else {
-      partitionedRegionThread = CoreLoggingExecutors.newSerialThreadPoolWithFeedStatistics(
+      partitionedRegionThread = LoggingExecutors.newSerialThreadPoolWithFeedStatistics(
           "PartitionedRegion Message Processor",
           thread -> stats.incPartitionedRegionThreadStarts(), this::doPartitionRegionThread,
           stats.getPartitionedRegionPoolHelper(), threadMonitor,
@@ -281,14 +279,14 @@ public class ClusterOperationExecutors implements OperationExecutors {
     }
     if (MAX_FE_THREADS > 1) {
       functionExecutionPool =
-          CoreLoggingExecutors.newFunctionThreadPoolWithFeedStatistics(
+          LoggingExecutors.newFunctionThreadPoolWithFeedStatistics(
               FUNCTION_EXECUTION_PROCESSOR_THREAD_PREFIX,
               thread -> stats.incFunctionExecutionThreadStarts(), this::doFunctionExecutionThread,
               MAX_FE_THREADS, stats.getFunctionExecutionPoolHelper(), threadMonitor,
               INCOMING_QUEUE_LIMIT, stats.getFunctionExecutionQueueHelper());
     } else {
       functionExecutionThread =
-          CoreLoggingExecutors.newSerialThreadPoolWithFeedStatistics(
+          LoggingExecutors.newSerialThreadPoolWithFeedStatistics(
               FUNCTION_EXECUTION_PROCESSOR_THREAD_PREFIX,
               thread -> stats.incFunctionExecutionThreadStarts(), this::doFunctionExecutionThread,
               stats.getFunctionExecutionPoolHelper(), threadMonitor,
@@ -849,7 +847,7 @@ public class ClusterOperationExecutors implements OperationExecutors {
 
       serialQueuedMap.put(id, poolQueue);
 
-      return CoreLoggingExecutors.newSerialThreadPool("Pooled Serial Message Processor" + id + "-",
+      return LoggingExecutors.newSerialThreadPool("Pooled Serial Message Processor" + id + "-",
           thread -> stats.incSerialPooledThreadStarts(), this::doSerialPooledThread,
           stats.getSerialPooledProcessorHelper(), threadMonitoring, poolQueue);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
index ec0253c..821a508 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java
@@ -101,7 +101,6 @@ import org.apache.geode.internal.logging.InternalLogWriter;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LogWriterFactory;
 import org.apache.geode.internal.logging.LoggingThread;
-import org.apache.geode.internal.logging.LoggingUncaughtExceptionHandler;
 import org.apache.geode.internal.net.SocketCreatorFactory;
 import org.apache.geode.internal.offheap.MemoryAllocator;
 import org.apache.geode.internal.offheap.OffHeapStorage;
@@ -538,8 +537,6 @@ public class InternalDistributedSystem extends DistributedSystem
       StatisticsManagerFactory statisticsManagerFactory) {
     alertingSession = AlertingSession.create();
     alertingService = new InternalAlertingServiceFactory().create();
-    LoggingUncaughtExceptionHandler
-        .setFailureSetter(error -> SystemFailure.setFailure((VirtualMachineError) error));
     loggingSession = LoggingSession.create();
     originalConfig = config.distributionConfig();
     isReconnectingDS = config.isReconnecting();
@@ -2189,7 +2186,7 @@ public class InternalDistributedSystem extends DistributedSystem
             // .uncleanShutdown("VM is exiting", null);
             // }
           }
-        }, false);
+        });
         Runtime.getRuntime().addShutdownHook(tmp_shutdownHook);
       }
     } finally {
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
index dbf371e..6c12a1c 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/tcpserver/TcpServer.java
@@ -60,8 +60,8 @@ import org.apache.geode.internal.cache.client.protocol.exception.ServiceLoadingF
 import org.apache.geode.internal.cache.client.protocol.exception.ServiceVersionNotFoundException;
 import org.apache.geode.internal.cache.tier.CommunicationMode;
 import org.apache.geode.internal.cache.tier.sockets.Handshake;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.logging.LoggingThread;
 import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.net.SocketCreatorFactory;
@@ -187,7 +187,7 @@ public class TcpServer {
   }
 
   private static ExecutorService createExecutor(PoolStatHelper poolHelper) {
-    return CoreLoggingExecutors.newThreadPoolWithSynchronousFeed("locator request thread ",
+    return LoggingExecutors.newThreadPoolWithSynchronousFeed("locator request thread ",
         MAX_POOL_SIZE, poolHelper, POOL_IDLE_TIMEOUT, new ThreadPoolExecutor.CallerRunsPolicy());
   }
 
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/EntriesCollection.java b/geode-core/src/main/java/org/apache/geode/internal/cache/EntriesCollection.java
similarity index 83%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/EntriesCollection.java
rename to geode-core/src/main/java/org/apache/geode/internal/cache/EntriesCollection.java
index b644e3f..3d55dd8 100644
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/EntriesCollection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/EntriesCollection.java
@@ -12,7 +12,12 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.logging;
+package org.apache.geode.internal.cache;
 
+import org.apache.geode.cache.Region;
+
+/**
+ * Collection of data entries in a data structure such as a {@link Region}.
+ */
 public interface EntriesCollection {
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/EntriesSet.java b/geode-core/src/main/java/org/apache/geode/internal/cache/EntriesSet.java
index 48fb563..18e3a3e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/EntriesSet.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/EntriesSet.java
@@ -26,7 +26,6 @@ import org.apache.geode.cache.EntryDestroyedException;
 import org.apache.geode.cache.Region;
 import org.apache.geode.internal.cache.LocalRegion.IteratorType;
 import org.apache.geode.internal.cache.entries.AbstractRegionEntry;
-import org.apache.geode.internal.logging.EntriesCollection;
 
 /** Set view of entries */
 public class EntriesSet extends AbstractSet implements EntriesCollection {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
index 2530429..87b66f0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
@@ -32,8 +32,8 @@ import org.apache.geode.cache.RegionDestroyedException;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.SystemTimer;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.tcp.ConnectionTable;
 
 /**
@@ -52,7 +52,7 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
     // default to inline expiry to fix bug 37115
     int nThreads = Integer.getInteger(DistributionConfig.GEMFIRE_PREFIX + "EXPIRY_THREADS", 0);
     if (nThreads > 0) {
-      executor = CoreLoggingExecutors.newThreadPoolWithSynchronousFeed("Expiry ",
+      executor = LoggingExecutors.newThreadPoolWithSynchronousFeed("Expiry ",
           (Runnable command) -> doExpiryThread(command),
           nThreads);
     } else {
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
index 105e045..cb03176 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java
@@ -217,7 +217,6 @@ import org.apache.geode.internal.config.ClusterConfigurationNotAvailableExceptio
 import org.apache.geode.internal.jndi.JNDIInvoker;
 import org.apache.geode.internal.jta.TransactionManagerImpl;
 import org.apache.geode.internal.lang.ThrowableUtils;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.InternalLogWriter;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingExecutors;
@@ -856,7 +855,7 @@ public class GemFireCacheImpl implements InternalCache, InternalClientCache, Has
       persistentMemberManager = new PersistentMemberManager();
 
       if (useAsyncEventListeners) {
-        eventThreadPool = CoreLoggingExecutors.newThreadPoolWithFixedFeed("Message Event Thread",
+        eventThreadPool = LoggingExecutors.newThreadPoolWithFixedFeed("Message Event Thread",
             command -> {
               ConnectionTable.threadWantsSharedResources();
               command.run();
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/control/InternalResourceManager.java b/geode-core/src/main/java/org/apache/geode/internal/cache/control/InternalResourceManager.java
index 7284d7e..a4a39a2 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/control/InternalResourceManager.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/control/InternalResourceManager.java
@@ -52,7 +52,6 @@ import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.control.ResourceAdvisor.ResourceManagerProfile;
 import org.apache.geode.internal.cache.partitioned.LoadProbe;
 import org.apache.geode.internal.cache.partitioned.SizedBasedLoadProbe;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.monitoring.ThreadsMonitoring;
@@ -136,7 +135,7 @@ public class InternalResourceManager implements ResourceManager {
     // Create a new executor the resource manager and the monitors it creates
     // can use to handle dispatching of notifications.
     this.notifyExecutor =
-        CoreLoggingExecutors.newSerialThreadPoolWithFeedStatistics("Notification Handler",
+        LoggingExecutors.newSerialThreadPoolWithFeedStatistics("Notification Handler",
             thread -> thread.setPriority(Thread.MAX_PRIORITY), null,
             this.stats.getResourceEventPoolStatHelper(), getThreadMonitorObj(),
             0, this.stats.getResourceEventQueueStatHelper());
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapEvictor.java b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapEvictor.java
index e44b980..5b350b6 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapEvictor.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/eviction/HeapEvictor.java
@@ -40,8 +40,8 @@ import org.apache.geode.internal.cache.control.InternalResourceManager;
 import org.apache.geode.internal.cache.control.InternalResourceManager.ResourceType;
 import org.apache.geode.internal.cache.control.MemoryEvent;
 import org.apache.geode.internal.cache.control.ResourceListener;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.statistics.StatisticsClock;
 
 /**
@@ -115,7 +115,7 @@ public class HeapEvictor implements ResourceListener<MemoryEvent> {
 
     if (!DISABLE_HEAP_EVICTOR_THREAD_POOL) {
       QueueStatHelper poolStats = this.cache.getCachePerfStats().getEvictionQueueStatHelper();
-      this.evictorThreadPool = CoreLoggingExecutors.newFixedThreadPoolWithTimeout(threadName,
+      this.evictorThreadPool = LoggingExecutors.newFixedThreadPoolWithTimeout(threadName,
           MAX_EVICTOR_THREADS, 15, poolStats);
     } else {
       // disabled
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
index 36002fc..6242e9c 100755
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/AcceptorImpl.java
@@ -89,8 +89,8 @@ import org.apache.geode.internal.cache.tier.OverflowAttributes;
 import org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.CacheClientNotifierProvider;
 import org.apache.geode.internal.cache.tier.sockets.ClientHealthMonitor.ClientHealthMonitorProvider;
 import org.apache.geode.internal.cache.wan.GatewayReceiverStats;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.logging.LoggingThread;
 import org.apache.geode.internal.logging.LoggingThreadFactory.CommandWrapper;
 import org.apache.geode.internal.logging.LoggingThreadFactory.ThreadInitializer;
@@ -645,7 +645,7 @@ public class AcceptorImpl implements Acceptor, Runnable {
         "Handshaker " + serverSock.getInetAddress() + ":" + localPort + " Thread ";
     try {
       logger.warn("Handshaker max Pool size: " + HANDSHAKE_POOL_SIZE);
-      return CoreLoggingExecutors.newThreadPoolWithSynchronousFeedThatHandlesRejection(threadName,
+      return LoggingExecutors.newThreadPoolWithSynchronousFeedThatHandlesRejection(threadName,
           thread -> getStats().incAcceptThreadsCreated(), null, 1, HANDSHAKE_POOL_SIZE, 60);
     } catch (IllegalArgumentException poolInitException) {
       stats.close();
@@ -656,8 +656,7 @@ public class AcceptorImpl implements Acceptor, Runnable {
   }
 
   private ExecutorService initializeClientQueueInitializerThreadPool() {
-    return CoreLoggingExecutors.newThreadPoolWithSynchronousFeed(
-        "Client Queue Initialization Thread ",
+    return LoggingExecutors.newThreadPoolWithSynchronousFeed("Client Queue Initialization Thread ",
         command -> {
           try {
             command.run();
@@ -682,11 +681,11 @@ public class AcceptorImpl implements Acceptor, Runnable {
     try {
       String threadName = "ServerConnection on port " + localPort + " Thread ";
       if (isSelector()) {
-        return CoreLoggingExecutors.newThreadPoolWithUnlimitedFeed(threadName, threadInitializer,
+        return LoggingExecutors.newThreadPoolWithUnlimitedFeed(threadName, threadInitializer,
             commandWrapper, maxThreads,
             getStats().getCnxPoolHelper(), Integer.MAX_VALUE, getThreadMonitorObj());
       }
-      return CoreLoggingExecutors.newThreadPoolWithSynchronousFeed(threadName, threadInitializer,
+      return LoggingExecutors.newThreadPoolWithSynchronousFeed(threadName, threadInitializer,
           commandWrapper,
           MINIMUM_MAX_CONNECTIONS, maxConnections, 0L);
     } catch (IllegalArgumentException poolInitException) {
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/LogService.java b/geode-core/src/main/java/org/apache/geode/internal/logging/LogService.java
similarity index 71%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/LogService.java
rename to geode-core/src/main/java/org/apache/geode/internal/logging/LogService.java
index 99952d0..a543634 100644
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/LogService.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/LogService.java
@@ -18,14 +18,18 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.util.StackLocator;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
-import org.apache.geode.internal.logging.log4j.message.GemFireParameterizedMessageFactory;
+import org.apache.geode.annotations.Immutable;
+import org.apache.geode.annotations.VisibleForTesting;
+import org.apache.geode.logging.internal.LoggingProviderLoader;
+import org.apache.geode.logging.internal.spi.LoggingProvider;
 
 /**
  * Provides Log4J2 Loggers with customized optimizations for Geode:
  */
-public class LogService {
+public class LogService extends LogManager {
 
+  @Immutable
+  private static final LoggingProvider loggingProvider = new LoggingProviderLoader().load();
 
   private LogService() {
     // do not instantiate
@@ -38,10 +42,15 @@ public class LogService {
    */
   public static Logger getLogger() {
     String name = StackLocator.getInstance().getCallerClass(2).getName();
-    return getLogger(name);
+    return loggingProvider.getLogger(name);
   }
 
   public static Logger getLogger(String name) {
-    return new FastLogger(LogManager.getLogger(name, GemFireParameterizedMessageFactory.INSTANCE));
+    return loggingProvider.getLogger(name);
+  }
+
+  @VisibleForTesting
+  static LoggingProvider getLoggingProvider() {
+    return loggingProvider;
   }
 }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/logging/CoreLoggingExecutors.java b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingExecutors.java
similarity index 72%
rename from geode-core/src/main/java/org/apache/geode/internal/logging/CoreLoggingExecutors.java
rename to geode-core/src/main/java/org/apache/geode/internal/logging/LoggingExecutors.java
index d0a04b1..456e118 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/logging/CoreLoggingExecutors.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingExecutors.java
@@ -19,14 +19,20 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory;
+import java.util.concurrent.ForkJoinWorkerThread;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.geode.distributed.internal.FunctionExecutionPooledExecutor;
 import org.apache.geode.distributed.internal.OverflowQueueWithDMStats;
@@ -43,7 +49,7 @@ import org.apache.geode.internal.monitoring.ThreadsMonitoring;
  * Utility class that creates instances of ExecutorService
  * whose threads will always log uncaught exceptions.
  */
-public class CoreLoggingExecutors {
+public class LoggingExecutors {
 
   public static ExecutorService newSerialThreadPool(String threadName,
       ThreadInitializer threadInitializer, CommandWrapper commandWrapper,
@@ -195,10 +201,90 @@ public class CoreLoggingExecutors {
         threadFactory, rejectedExecutionHandler);
   }
 
+  private static ThreadPoolExecutor newFixedThreadPool(String threadName, boolean isDaemon,
+      int poolSize, long keepAliveSeconds, BlockingQueue<Runnable> feed) {
+    ThreadFactory threadFactory = new LoggingThreadFactory(threadName, isDaemon);
+    return new ThreadPoolExecutor(poolSize, poolSize,
+        keepAliveSeconds, SECONDS,
+        feed, threadFactory);
+  }
+
+  private static ThreadPoolExecutor newFixedThreadPool(String threadName, boolean isDaemon,
+      long keepAliveSeconds, int poolSize) {
+    LinkedBlockingQueue<Runnable> feed = new LinkedBlockingQueue<>();
+    return newFixedThreadPool(threadName, isDaemon, poolSize, keepAliveSeconds, feed);
+  }
+
+  public static ExecutorService newFixedThreadPool(String threadName, boolean isDaemon,
+      int poolSize) {
+    return newFixedThreadPool(threadName, isDaemon, 0L, poolSize);
+  }
+
+  public static ExecutorService newFixedThreadPoolWithTimeout(String threadName, int poolSize,
+      int keepAliveSeconds) {
+    return newFixedThreadPool(threadName, true, keepAliveSeconds, poolSize);
+  }
+
   public static ExecutorService newFixedThreadPoolWithTimeout(String threadName,
       int poolSize, int keepAliveSeconds, QueueStatHelper feedStats) {
     BlockingQueue<Runnable> feed = createFeedWithStatistics(0, feedStats);
-    return LoggingExecutors.newFixedThreadPool(threadName, true, poolSize, keepAliveSeconds, feed);
+    return newFixedThreadPool(threadName, true, poolSize, keepAliveSeconds, feed);
+  }
+
+  public static ExecutorService newFixedThreadPoolWithFeedSize(String threadName,
+      int poolSize, int feedSize) {
+    LinkedBlockingQueue<Runnable> feed = new LinkedBlockingQueue<>(feedSize);
+    RejectedExecutionHandler rejectionHandler = new ThreadPoolExecutor.CallerRunsPolicy();
+    ThreadFactory threadFactory = new LoggingThreadFactory(threadName);
+    ThreadPoolExecutor executor = new ThreadPoolExecutor(poolSize, poolSize, 10, SECONDS, feed,
+        threadFactory, rejectionHandler);
+    executor.allowCoreThreadTimeOut(true);
+    return executor;
+  }
+
+  public static ExecutorService newSingleThreadExecutor(String threadName, boolean isDaemon) {
+    ThreadFactory threadFactory = new LoggingThreadFactory(threadName, isDaemon);
+    return new ThreadPoolExecutor(1, 1, 0L, SECONDS,
+        new LinkedBlockingQueue<Runnable>(),
+        threadFactory);
+  }
+
+  public static ExecutorService newCachedThreadPool(String threadName, boolean isDaemon) {
+    ThreadFactory threadFactory = new LoggingThreadFactory(threadName, isDaemon);
+    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
+        60L, TimeUnit.SECONDS,
+        new SynchronousQueue<Runnable>(),
+        threadFactory);
+  }
+
+  public static ExecutorService newWorkStealingPool(String threadName, int maxParallelThreads) {
+    final ForkJoinWorkerThreadFactory factory = pool -> {
+      ForkJoinWorkerThread worker = ForkJoinPool.defaultForkJoinWorkerThreadFactory.newThread(pool);
+      LoggingUncaughtExceptionHandler.setOnThread(worker);
+      worker.setName(threadName + worker.getPoolIndex());
+      return worker;
+    };
+    return new ForkJoinPool(maxParallelThreads, factory, null, true);
+  }
+
+  public static Executor newThreadOnEachExecute(String threadName) {
+    return command -> new LoggingThread(threadName, command).start();
+  }
+
+  public static ScheduledExecutorService newScheduledThreadPool(String threadName, int poolSize) {
+    return newScheduledThreadPool(threadName, poolSize, true);
+  }
+
+  public static ScheduledExecutorService newScheduledThreadPool(String threadName, int poolSize,
+      boolean executeDelayedTasks) {
+    ScheduledThreadPoolExecutor result =
+        new ScheduledThreadPoolExecutor(poolSize, new LoggingThreadFactory(threadName));
+    result.setExecuteExistingDelayedTasksAfterShutdownPolicy(executeDelayedTasks);
+    return result;
+  }
+
+  public static ScheduledExecutorService newSingleThreadScheduledExecutor(String threadName) {
+    return newScheduledThreadPool(threadName, 1);
   }
 
   public static ScheduledExecutorService newScheduledThreadPool(String threadName, int poolSize,
@@ -212,7 +298,7 @@ public class CoreLoggingExecutors {
     return result;
   }
 
-  private CoreLoggingExecutors() {
+  private LoggingExecutors() {
     // no instances allowed
   }
 
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingThread.java b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingThread.java
similarity index 84%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingThread.java
rename to geode-core/src/main/java/org/apache/geode/internal/logging/LoggingThread.java
index 34fa225..6fe27d1 100644
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingThread.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingThread.java
@@ -18,7 +18,6 @@ package org.apache.geode.internal.logging;
  * LoggingThread instances always handle uncaught exceptions by logging them.
  */
 public class LoggingThread extends Thread {
-  private boolean treatExceptionAsFatal;
 
   /**
    * Creates a daemon thread with the given name
@@ -50,18 +49,9 @@ public class LoggingThread extends Thread {
    * @param runnable what the thread will run
    */
   public LoggingThread(final String name, final boolean isDaemon, final Runnable runnable) {
-    this(name, isDaemon, runnable, true);
-  }
-
-  public LoggingThread(final String name, final boolean isDaemon, final Runnable runnable,
-      final boolean treatExceptionAsFatal) {
     super(runnable, name);
-    this.treatExceptionAsFatal = treatExceptionAsFatal;
     setDaemon(isDaemon);
+    // TODO: fix escaping reference of this
     LoggingUncaughtExceptionHandler.setOnThread(this);
   }
-
-  public boolean isTreatExceptionAsFatal() {
-    return treatExceptionAsFatal;
-  }
 }
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingThreadFactory.java b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingThreadFactory.java
similarity index 100%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingThreadFactory.java
rename to geode-core/src/main/java/org/apache/geode/internal/logging/LoggingThreadFactory.java
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandler.java b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandler.java
similarity index 86%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandler.java
rename to geode-core/src/main/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandler.java
index 3e78ae2..f1d7147 100644
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandler.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandler.java
@@ -14,12 +14,15 @@
  */
 package org.apache.geode.internal.logging;
 
+import static org.apache.geode.distributed.internal.InternalDistributedSystem.SHUTDOWN_HOOK_NAME;
+
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.text.MessageFormat;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.logging.log4j.Logger;
 
+import org.apache.geode.SystemFailure;
 import org.apache.geode.annotations.Immutable;
 
 /**
@@ -30,7 +33,7 @@ public class LoggingUncaughtExceptionHandler {
 
   @Immutable
   private static final Implementation handler =
-      new Implementation(LogService.getLogger());
+      new Implementation(LogService.getLogger(), error -> SystemFailure.setFailure(error));
 
   public static UncaughtExceptionHandler getInstance() {
     return handler;
@@ -43,10 +46,6 @@ public class LoggingUncaughtExceptionHandler {
     handler.setOnThread(thread);
   }
 
-  public static void setFailureSetter(final FailureSetter failureSetter) {
-    handler.setFailureSetter(failureSetter);
-  }
-
   public static int getUncaughtExceptionsCount() {
     return handler.getUncaughtExceptionsCount();
   }
@@ -60,7 +59,8 @@ public class LoggingUncaughtExceptionHandler {
   }
 
   // non-private for unit testing
-  public interface FailureSetter {
+  interface FailureSetter {
+
     void setFailure(VirtualMachineError error);
   }
 
@@ -68,21 +68,22 @@ public class LoggingUncaughtExceptionHandler {
   static class Implementation implements UncaughtExceptionHandler {
 
     private final Logger logger;
-    private FailureSetter failureSetter;
+    private final FailureSetter failureSetter;
     private final AtomicInteger uncaughtExceptionsCount = new AtomicInteger();
 
-    Implementation(final Logger logger) {
+    Implementation(final Logger logger, final FailureSetter failureSetter) {
       this.logger = logger;
+      this.failureSetter = failureSetter;
     }
 
     @Override
     public void uncaughtException(final Thread t, final Throwable e) {
-      if (e instanceof VirtualMachineError && failureSetter != null) {
+      if (e instanceof VirtualMachineError) {
         failureSetter.setFailure((VirtualMachineError) e);
       }
       // Solution to treat the shutdown hook error as a special case.
       // Do not change the hook's thread name without also changing it here.
-      if (e instanceof NoClassDefFoundError && !((LoggingThread) t).isTreatExceptionAsFatal()) {
+      if (e instanceof NoClassDefFoundError && t.getName().equals(SHUTDOWN_HOOK_NAME)) {
         logger.info(
             "Uncaught exception in thread {} this message can be disregarded if it occurred during an Application Server shutdown. The Exception message was: {}",
             t, e);
@@ -93,10 +94,6 @@ public class LoggingUncaughtExceptionHandler {
       uncaughtExceptionsCount.incrementAndGet();
     }
 
-    void setFailureSetter(final FailureSetter failureSetter) {
-      this.failureSetter = failureSetter;
-    }
-
     void setOnThread(final Thread thread) {
       thread.setUncaughtExceptionHandler(this);
     }
diff --git a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
index 4331f25..b622079 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/ConnectionTable.java
@@ -47,7 +47,6 @@ import org.apache.geode.distributed.internal.membership.adapter.GMSMembershipMan
 import org.apache.geode.distributed.internal.membership.gms.api.Membership;
 import org.apache.geode.internal.Assert;
 import org.apache.geode.internal.SystemTimer;
-import org.apache.geode.internal.logging.CoreLoggingExecutors;
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingExecutors;
 import org.apache.geode.internal.net.BufferPool;
@@ -211,7 +210,7 @@ public class ConnectionTable {
     if (conserveSockets) {
       return LoggingExecutors.newThreadOnEachExecute("SharedP2PReader");
     } else {
-      return CoreLoggingExecutors.newThreadPoolWithSynchronousFeed("UnsharedP2PReader", 1,
+      return LoggingExecutors.newThreadPoolWithSynchronousFeed("UnsharedP2PReader", 1,
           Integer.MAX_VALUE, READER_POOL_KEEP_ALIVE_TIME);
     }
   }
diff --git a/geode-core/src/main/java/org/apache/geode/logging/internal/SimpleLoggingProvider.java b/geode-core/src/main/java/org/apache/geode/logging/internal/SimpleLoggingProvider.java
index 03a68b2..02cca4e 100644
--- a/geode-core/src/main/java/org/apache/geode/logging/internal/SimpleLoggingProvider.java
+++ b/geode-core/src/main/java/org/apache/geode/logging/internal/SimpleLoggingProvider.java
@@ -14,6 +14,8 @@
  */
 package org.apache.geode.logging.internal;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.logging.internal.spi.LogConfig;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateOccurs;
@@ -38,6 +40,11 @@ public class SimpleLoggingProvider implements LoggingProvider {
   }
 
   @Override
+  public Logger getLogger(String name) {
+    return LogManager.getLogger(name);
+  }
+
+  @Override
   public int getPriority() {
     return Integer.MIN_VALUE;
   }
diff --git a/geode-core/src/main/java/org/apache/geode/logging/internal/spi/LoggingProvider.java b/geode-core/src/main/java/org/apache/geode/logging/internal/spi/LoggingProvider.java
index 169fcbf..9b46959 100644
--- a/geode-core/src/main/java/org/apache/geode/logging/internal/spi/LoggingProvider.java
+++ b/geode-core/src/main/java/org/apache/geode/logging/internal/spi/LoggingProvider.java
@@ -14,6 +14,7 @@
  */
 package org.apache.geode.logging.internal.spi;
 
+import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.cache.Cache;
 import org.apache.geode.distributed.ConfigurationProperties;
@@ -83,6 +84,16 @@ public interface LoggingProvider {
   }
 
   /**
+   * Returns a Logger with the specified name.
+   *
+   * @param name The logger name. If null the name of the calling class will be used.
+   * @return The Logger.
+   * @throws UnsupportedOperationException if {@code name} is {@code null} and the calling class
+   *         cannot be determined.
+   */
+  Logger getLogger(String name);
+
+  /**
    * If multiple {@code LoggingProvider}s are loadable then the instance with the highest priority
    * or the first iterable element will be used.
    */
diff --git a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
index 8fa56fe..3ac1bed 100644
--- a/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java
@@ -31,6 +31,7 @@ import org.junit.runner.RunWith;
 import org.apache.geode.CancelCriterion;
 import org.apache.geode.GemFireException;
 import org.apache.geode.InternalGemFireError;
+import org.apache.geode.SystemFailure;
 import org.apache.geode.alerting.internal.spi.AlertingAction;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.Locator;
@@ -99,9 +100,6 @@ public class MembershipDependenciesJUnitTest {
       .onlyDependOnClassesThat(
           resideInAPackage("org.apache.geode.distributed.internal.membership.gms..")
               .or(resideInAPackage("org.apache.geode.internal.serialization.."))
-              .or(type(LogService.class))
-              .or(type(LoggingExecutors.class))
-              .or(type(LoggingThread.class))
 
               .or(not(resideInAPackage("org.apache.geode..")))
               .or(resideInAPackage("org.apache.geode.test.."))
@@ -120,6 +118,15 @@ public class MembershipDependenciesJUnitTest {
               // TODO: Membership needs its own config object
               .or(type(MembershipManager.class))
 
+
+              // TODO: Break dependency on geode logger
+              .or(type(LogService.class))
+              .or(assignableTo(LoggingThread.class))
+              .or(type(LoggingExecutors.class))
+
+              // TODO
+              .or(type(SystemFailure.class))
+
               // TODO
               .or(assignableTo(CancelCriterion.class))
 
diff --git a/geode-logging/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java b/geode-core/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
similarity index 62%
copy from geode-logging/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
copy to geode-core/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
index af6bcee..c8fa7a2 100644
--- a/geode-logging/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
@@ -17,14 +17,13 @@ package org.apache.geode.internal.logging;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.message.MessageFactory;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TestName;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
-import org.apache.geode.internal.logging.log4j.message.GemFireParameterizedMessageFactory;
+import org.apache.geode.logging.internal.SimpleLoggingProvider;
+import org.apache.geode.logging.internal.spi.LoggingProvider;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
@@ -39,34 +38,23 @@ public class LogServiceTest {
   public TestName testName = new TestName();
 
   @Test
-  public void getLoggerReturnsFastLogger() {
-    assertThat(LogService.getLogger()).isInstanceOf(FastLogger.class);
-  }
-
-  @Test
   public void getLoggerReturnsLoggerWithCallerClassName() {
-    assertThat(LogService.getLogger().getName()).isEqualTo(getClass().getName());
-  }
-
-  @Test
-  public void getLoggerReturnsLoggerWithGeodeMessageFactory() {
     Logger logger = LogService.getLogger();
 
-    MessageFactory messageFactory = logger.getMessageFactory();
-    assertThat(messageFactory).isInstanceOf(GemFireParameterizedMessageFactory.class);
+    assertThat(logger.getName()).isEqualTo(getClass().getName());
   }
 
   @Test
   public void getLoggerNameReturnsLoggerWithSpecifiedName() {
-    assertThat(LogService.getLogger(APPLICATION_LOGGER_NAME).getName())
-        .isEqualTo(APPLICATION_LOGGER_NAME);
+    Logger logger = LogService.getLogger(APPLICATION_LOGGER_NAME);
+
+    assertThat(logger.getName()).isEqualTo(APPLICATION_LOGGER_NAME);
   }
 
   @Test
-  public void getLoggerNameReturnsLoggerWithGeodeMessageFactory() {
-    Logger logger = LogService.getLogger(APPLICATION_LOGGER_NAME);
+  public void getLoggingProviderReturnsSimpleLoggingProviderByDefault() {
+    LoggingProvider loggingProvider = LogService.getLoggingProvider();
 
-    MessageFactory messageFactory = logger.getMessageFactory();
-    assertThat(messageFactory).isInstanceOf(GemFireParameterizedMessageFactory.class);
+    assertThat(loggingProvider).isInstanceOf(SimpleLoggingProvider.class);
   }
 }
diff --git a/geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingThreadFactoryTest.java b/geode-core/src/test/java/org/apache/geode/internal/logging/LoggingThreadFactoryTest.java
similarity index 100%
rename from geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingThreadFactoryTest.java
rename to geode-core/src/test/java/org/apache/geode/internal/logging/LoggingThreadFactoryTest.java
diff --git a/geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingThreadTest.java b/geode-core/src/test/java/org/apache/geode/internal/logging/LoggingThreadTest.java
similarity index 100%
rename from geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingThreadTest.java
rename to geode-core/src/test/java/org/apache/geode/internal/logging/LoggingThreadTest.java
diff --git a/geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandlerTest.java b/geode-core/src/test/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandlerTest.java
similarity index 83%
rename from geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandlerTest.java
rename to geode-core/src/test/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandlerTest.java
index 6680c06..be08d62 100644
--- a/geode-logging/src/test/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandlerTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/logging/LoggingUncaughtExceptionHandlerTest.java
@@ -26,6 +26,7 @@ import org.apache.logging.log4j.Logger;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.logging.LoggingUncaughtExceptionHandler.FailureSetter;
 import org.apache.geode.internal.logging.LoggingUncaughtExceptionHandler.Implementation;
 import org.apache.geode.test.junit.categories.LoggingTest;
@@ -44,7 +45,7 @@ public class LoggingUncaughtExceptionHandlerTest {
   @Test
   public void verifyThatSetOnThreadSetsTheThreadsHandler() {
     Thread thread = new Thread();
-    Implementation handler = new Implementation(null);
+    Implementation handler = new Implementation(null, null);
 
     handler.setOnThread(thread);
 
@@ -54,7 +55,7 @@ public class LoggingUncaughtExceptionHandlerTest {
   @Test
   public void verifyThatCallingUncaughtExceptionIncreasesTheCountByOne() {
     Logger logger = mock(Logger.class);
-    Implementation handler = new Implementation(logger);
+    Implementation handler = new Implementation(logger, null);
     int count = handler.getUncaughtExceptionsCount();
 
     handler.uncaughtException(null, null);
@@ -65,7 +66,7 @@ public class LoggingUncaughtExceptionHandlerTest {
   @Test
   public void verifyThatCallingClearSetsTheCountToZero() {
     Logger logger = mock(Logger.class);
-    Implementation handler = new Implementation(logger);
+    Implementation handler = new Implementation(logger, null);
     // force the count to be non-zero
     handler.uncaughtException(null, null);
 
@@ -79,7 +80,7 @@ public class LoggingUncaughtExceptionHandlerTest {
     Logger logger = mock(Logger.class);
     Thread thread = mock(Thread.class);
     Throwable throwable = mock(Throwable.class);
-    Implementation handler = new Implementation(logger);
+    Implementation handler = new Implementation(logger, null);
 
     handler.uncaughtException(thread, throwable);
 
@@ -87,12 +88,12 @@ public class LoggingUncaughtExceptionHandlerTest {
   }
 
   @Test
-  public void verifyInfoMessageLoggedWhenUncaughtExceptionIsCalledWithTreatExceptionAsFatalFalse() {
+  public void verifyInfoMessageLoggedWhenUncaughtExceptionIsCalledByShutdownHookAndWithNoClassDefFoundError() {
     Logger logger = mock(Logger.class);
-    Thread thread = new LoggingThread("test", false, () -> {
-    }, false);
+    Thread thread = new Thread();
+    thread.setName(InternalDistributedSystem.SHUTDOWN_HOOK_NAME);
     Throwable throwable = mock(NoClassDefFoundError.class);
-    Implementation handler = new Implementation(logger);
+    Implementation handler = new Implementation(logger, null);
 
     handler.uncaughtException(thread, throwable);
 
@@ -106,12 +107,12 @@ public class LoggingUncaughtExceptionHandlerTest {
     Logger logger = mock(Logger.class);
     Thread thread = mock(Thread.class);
     VirtualMachineError error = mock(VirtualMachineError.class);
-    FailureSetter failureSetter = mock(FailureSetter.class);
-    Implementation handler = new Implementation(logger);
-    handler.setFailureSetter(failureSetter);
+    FailureSetter failureSettor = mock(FailureSetter.class);
+    Implementation handler = new Implementation(logger, failureSettor);
+
     handler.uncaughtException(thread, error);
 
-    verify(failureSetter).setFailure(error);
+    verify(failureSettor).setFailure(error);
   }
 
 }
diff --git a/geode-core/src/test/java/org/apache/geode/logging/internal/LoggingProviderLoaderTest.java b/geode-core/src/test/java/org/apache/geode/logging/internal/LoggingProviderLoaderTest.java
index b5f2792..67304a9 100644
--- a/geode-core/src/test/java/org/apache/geode/logging/internal/LoggingProviderLoaderTest.java
+++ b/geode-core/src/test/java/org/apache/geode/logging/internal/LoggingProviderLoaderTest.java
@@ -17,6 +17,7 @@ package org.apache.geode.logging.internal;
 import static org.apache.geode.logging.internal.LoggingProviderLoader.LOGGING_PROVIDER_NAME_PROPERTY;
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.logging.log4j.Logger;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -81,13 +82,6 @@ public class LoggingProviderLoaderTest {
     assertThat(value).isInstanceOf(SimpleLoggingProvider.class);
   }
 
-  @Test
-  public void getLoggingProviderReturnsSimpleLoggingProviderByDefault() {
-    LoggingProvider loggingProvider = new LoggingProviderLoader().load();
-
-    assertThat(loggingProvider).isInstanceOf(SimpleLoggingProvider.class);
-  }
-
   static class TestLoggingProvider implements LoggingProvider {
 
     @Override
@@ -103,6 +97,11 @@ public class LoggingProviderLoaderTest {
     }
 
     @Override
+    public Logger getLogger(String name) {
+      return null;
+    }
+
+    @Override
     public int getPriority() {
       return Integer.MAX_VALUE;
     }
diff --git a/geode-core/src/test/resources/expected-pom.xml b/geode-core/src/test/resources/expected-pom.xml
index 50e4a80..1e3bb4f 100644
--- a/geode-core/src/test/resources/expected-pom.xml
+++ b/geode-core/src/test/resources/expected-pom.xml
@@ -244,11 +244,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-unsafe</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-cq/build.gradle b/geode-cq/build.gradle
index b2cdd6d..cc0b8e6 100644
--- a/geode-cq/build.gradle
+++ b/geode-cq/build.gradle
@@ -23,7 +23,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
   compile(project(':geode-core'))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   testCompile(project(':geode-junit')) {
     exclude module: 'geode-core'
diff --git a/geode-cq/src/test/resources/expected-pom.xml b/geode-cq/src/test/resources/expected-pom.xml
index 0ca63e1..073ef6a 100644
--- a/geode-cq/src/test/resources/expected-pom.xml
+++ b/geode-cq/src/test/resources/expected-pom.xml
@@ -58,11 +58,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-docs/tools_modules/http_session_mgmt/tomcat_installing_the_module.html.md.erb b/geode-docs/tools_modules/http_session_mgmt/tomcat_installing_the_module.html.md.erb
index 1412b09..6c633f2 100644
--- a/geode-docs/tools_modules/http_session_mgmt/tomcat_installing_the_module.html.md.erb
+++ b/geode-docs/tools_modules/http_session_mgmt/tomcat_installing_the_module.html.md.erb
@@ -33,9 +33,7 @@ This topic describes how to install the HTTP session management module for Tomca
     -   fastutil jar
     -   geode-commons jar
     -   geode-core jar
-    -   geode-logging jar
     -   geode-management jar
-    -   geode-serialization jar
     -   javax.transaction-api jar
     -   jgroups jar
     -   log4j-api jar
diff --git a/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb b/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
index 9381b71..499f9f8 100644
--- a/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
+++ b/geode-docs/tools_modules/http_session_mgmt/weblogic_setting_up_the_module.html.md.erb
@@ -70,7 +70,6 @@ To modify your war or ear file manually, make the following updates:
     -   geode-core jar
     -   geode-json jar
     -   geode-management jar
-    -   geode-logging jar
     -   geode-serialization jar
     -   javax.transaction-api jar
     -   jgroups jar
diff --git a/geode-dunit/build.gradle b/geode-dunit/build.gradle
index 5f6e97a..ec36c96 100755
--- a/geode-dunit/build.gradle
+++ b/geode-dunit/build.gradle
@@ -22,7 +22,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
   implementation(project(':geode-log4j')) {
diff --git a/geode-dunit/src/test/resources/expected-pom.xml b/geode-dunit/src/test/resources/expected-pom.xml
index 6a7eac9..64ec9c0 100644
--- a/geode-dunit/src/test/resources/expected-pom.xml
+++ b/geode-dunit/src/test/resources/expected-pom.xml
@@ -172,11 +172,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-experimental-driver/build.gradle b/geode-experimental-driver/build.gradle
index 6820bab..d5d8802 100644
--- a/geode-experimental-driver/build.gradle
+++ b/geode-experimental-driver/build.gradle
@@ -44,7 +44,6 @@ dependencies {
     exclude module: 'junit-dep'
   }
 
-  integrationTestImplementation(project(':geode-logging'))
   integrationTestImplementation(project(':geode-serialization'))
   integrationTestCompile('com.github.stefanbirkner:system-rules') {
     exclude module: 'junit-dep'
diff --git a/geode-http-service/build.gradle b/geode-http-service/build.gradle
index 3aad67f..ac29a78 100755
--- a/geode-http-service/build.gradle
+++ b/geode-http-service/build.gradle
@@ -21,7 +21,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
-  implementation(project(':geode-logging'))
 
   implementation('org.springframework:spring-web')
   implementation('org.apache.httpcomponents:httpclient')
@@ -38,4 +37,3 @@ dependencies {
   testCompile(project(':geode-common'))
   testCompile(project(':geode-junit'))
 }
-
diff --git a/geode-http-service/src/test/resources/expected-pom.xml b/geode-http-service/src/test/resources/expected-pom.xml
index 26ada1c..154fdba 100644
--- a/geode-http-service/src/test/resources/expected-pom.xml
+++ b/geode-http-service/src/test/resources/expected-pom.xml
@@ -62,11 +62,6 @@
       <scope>runtime</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-webapp</artifactId>
       <scope>runtime</scope>
diff --git a/geode-junit/build.gradle b/geode-junit/build.gradle
index da6b0c5..53281de 100755
--- a/geode-junit/build.gradle
+++ b/geode-junit/build.gradle
@@ -24,7 +24,6 @@ dependencies {
   compile(platform(project(':boms:geode-all-bom')))
 
   compileOnly(project(':geode-core'))
-  compileOnly(project(':geode-logging'))
   compileOnly(project(':geode-serialization'))
   compileOnly(project(':geode-unsafe'))
 
diff --git a/geode-log4j/build.gradle b/geode-log4j/build.gradle
index ce110b2..4f77b33 100644
--- a/geode-log4j/build.gradle
+++ b/geode-log4j/build.gradle
@@ -25,9 +25,8 @@ dependencies {
   api(platform(project(':boms:geode-all-bom')))
 
   implementation(project(':geode-core'))
-  implementation(project(':geode-logging'))
 
-  implementation('org.apache.logging.log4j:log4j-api')
+  api('org.apache.logging.log4j:log4j-api')
   implementation('org.apache.logging.log4j:log4j-core')
 
   //This routes slf4j logs to log4j. Shiro and micrometer use slf4j
diff --git a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
index eda7874..1a88212 100644
--- a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
+++ b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerIntegrationTest.java
@@ -41,12 +41,12 @@ import org.junit.experimental.categories.Category;
 import org.junit.rules.TemporaryFolder;
 
 import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.logging.log4j.FastLogger;
 import org.apache.geode.logging.internal.Configuration;
 import org.apache.geode.logging.internal.spi.LogConfig;
 import org.apache.geode.logging.internal.spi.LogConfigSupplier;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateOccurs;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateScope;
+import org.apache.geode.logging.log4j.internal.FastLogger;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
diff --git a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerWithDefaultConfigIntegrationTest.java b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerWithDefaultConfigIntegrationTest.java
index f2f02f1..448a299 100755
--- a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerWithDefaultConfigIntegrationTest.java
+++ b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/FastLoggerWithDefaultConfigIntegrationTest.java
@@ -25,12 +25,12 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.logging.log4j.FastLogger;
 import org.apache.geode.logging.internal.Configuration;
 import org.apache.geode.logging.internal.spi.LogConfig;
 import org.apache.geode.logging.internal.spi.LogConfigSupplier;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateOccurs;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateScope;
+import org.apache.geode.logging.log4j.internal.FastLogger;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
diff --git a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LoggingWithDistributedSystemIntegrationTest.java b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LoggingWithDistributedSystemIntegrationTest.java
index 36a08f1..c58f239 100755
--- a/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LoggingWithDistributedSystemIntegrationTest.java
+++ b/geode-log4j/src/integrationTest/java/org/apache/geode/logging/log4j/internal/impl/LoggingWithDistributedSystemIntegrationTest.java
@@ -52,10 +52,10 @@ import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.DistributionConfig;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.logging.log4j.FastLogger;
 import org.apache.geode.logging.internal.log4j.LogWriterLogger;
 import org.apache.geode.logging.internal.spi.LogConfig;
 import org.apache.geode.logging.internal.spi.LogWriterLevel;
+import org.apache.geode.logging.log4j.internal.FastLogger;
 import org.apache.geode.test.assertj.LogFileAssert;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
diff --git a/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerDisabledLevelBenchmark.java b/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerDisabledLevelBenchmark.java
index 20ba218..0ec3b60 100644
--- a/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerDisabledLevelBenchmark.java
+++ b/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerDisabledLevelBenchmark.java
@@ -36,8 +36,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
-
 @Measurement(iterations = 1, time = 1, timeUnit = MINUTES)
 @Warmup(iterations = 1, time = 1, timeUnit = MINUTES)
 @Fork(1)
diff --git a/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerEnabledLevelBenchmark.java b/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerEnabledLevelBenchmark.java
index c5efa1f..e88d4ac 100644
--- a/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerEnabledLevelBenchmark.java
+++ b/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerEnabledLevelBenchmark.java
@@ -36,8 +36,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
-
 @Measurement(iterations = 1, time = 1, timeUnit = MINUTES)
 @Warmup(iterations = 1, time = 1, timeUnit = MINUTES)
 @Fork(1)
diff --git a/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerParameterTypeBenchmark.java b/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerParameterTypeBenchmark.java
index 0ebdcfd..a9c331a 100644
--- a/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerParameterTypeBenchmark.java
+++ b/geode-log4j/src/jmh/java/org/apache/geode/logging/log4j/internal/FastLoggerParameterTypeBenchmark.java
@@ -39,8 +39,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
-
 @Measurement(iterations = 1, time = 1, timeUnit = MINUTES)
 @Warmup(iterations = 1, time = 1, timeUnit = MINUTES)
 @Fork(1)
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/FastLogger.java b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/FastLogger.java
similarity index 97%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/FastLogger.java
rename to geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/FastLogger.java
index 12db1af..08fe9d5 100644
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/FastLogger.java
+++ b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/FastLogger.java
@@ -12,7 +12,7 @@
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.geode.internal.logging.log4j;
+package org.apache.geode.logging.log4j.internal;
 
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.Marker;
@@ -27,7 +27,6 @@ import org.apache.geode.annotations.internal.MakeNotStatic;
  * Overrides is-enabled checks for log levels below INFO to avoid performance penalties when the log
  * level is INFO or above. If delegating is true then it will always delegate to
  * ExtendedLoggerWrapper for is-enabled checks.
- *
  */
 public class FastLogger extends ExtendedLoggerWrapper {
   private static final long serialVersionUID = 7084130827962463327L;
@@ -74,6 +73,6 @@ public class FastLogger extends ExtendedLoggerWrapper {
   }
 
   public ExtendedLogger getExtendedLogger() {
-    return super.logger;
+    return logger;
   }
 }
diff --git a/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/AppenderContext.java b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/AppenderContext.java
new file mode 100644
index 0000000..dabe115
--- /dev/null
+++ b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/AppenderContext.java
@@ -0,0 +1,81 @@
+/*
+ * 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.geode.logging.log4j.internal.impl;
+
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.LoggerConfig;
+
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.logging.log4j.internal.FastLogger;
+
+/**
+ * Provides the LoggerContext and LoggerConfig for GemFire appenders to attach to. These appenders
+ * include AlertAppender and LogWriterAppender.
+ *
+ */
+public class AppenderContext {
+
+  /**
+   * "org.apache" is a good alternative for limiting alerts to just gemstone packages, otherwise
+   * ROOT is used
+   */
+  public static final String LOGGER_PROPERTY = "gemfire.logging.appenders.LOGGER";
+
+  public AppenderContext() {
+    this(System.getProperty(LOGGER_PROPERTY, ""));
+  }
+
+  private final String name;
+
+  public AppenderContext(final String name) {
+    this.name = name;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public LoggerContext getLoggerContext() {
+    return getLogger().getContext();
+  }
+
+  public LoggerConfig getLoggerConfig() {
+    final Logger logger = getLogger();
+    final LoggerContext context = logger.getContext();
+    return context.getConfiguration().getLoggerConfig(logger.getName());
+  }
+
+  public String toString() {
+    StringBuilder sb = new StringBuilder();
+    sb.append("AppenderContext:");
+    if ("".equals(name)) {
+      sb.append("<ROOT>");
+    } else {
+      sb.append(name);
+    }
+    return sb.toString();
+  }
+
+  private Logger getLogger() {
+    Logger logger = null;
+    if ("".equals(name)) {
+      logger = (Logger) LogService.getRootLogger();
+    } else {
+      logger = (Logger) ((FastLogger) LogService.getLogger(name)).getExtendedLogger();
+    }
+    return logger;
+  }
+}
diff --git a/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/Log4jLoggingProvider.java b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/Log4jLoggingProvider.java
index 75ccbbe..80f46a1 100644
--- a/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/Log4jLoggingProvider.java
+++ b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/Log4jLoggingProvider.java
@@ -33,12 +33,13 @@ import org.apache.logging.log4j.core.lookup.StrLookup;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 
 import org.apache.geode.annotations.VisibleForTesting;
-import org.apache.geode.internal.logging.log4j.FastLogger;
 import org.apache.geode.logging.internal.spi.LogConfig;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateOccurs;
 import org.apache.geode.logging.internal.spi.LogLevelUpdateScope;
 import org.apache.geode.logging.internal.spi.LogWriterLevel;
 import org.apache.geode.logging.internal.spi.LoggingProvider;
+import org.apache.geode.logging.log4j.internal.FastLogger;
+import org.apache.geode.logging.log4j.internal.impl.message.GemFireParameterizedMessageFactory;
 
 /**
  * Log4J 2 implementation of {@link LoggingProvider}.
@@ -184,6 +185,11 @@ public class Log4jLoggingProvider implements LoggingProvider {
   }
 
   @Override
+  public org.apache.logging.log4j.Logger getLogger(final String name) {
+    return new FastLogger(LogManager.getLogger(name, GemFireParameterizedMessageFactory.get()));
+  }
+
+  @Override
   public int getPriority() {
     return 0;
   }
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessage.java b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/message/GemFireParameterizedMessage.java
similarity index 98%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessage.java
rename to geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/message/GemFireParameterizedMessage.java
index 98d4d77..be60ab1 100755
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessage.java
+++ b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/message/GemFireParameterizedMessage.java
@@ -1,7 +1,7 @@
 /*
  * 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
+ * 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
  *
@@ -9,10 +9,10 @@
  *
  * 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.
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
  */
-package org.apache.geode.internal.logging.log4j.message;
+package org.apache.geode.logging.log4j.internal.impl.message;
 
 import java.text.SimpleDateFormat;
 import java.util.Arrays;
@@ -24,7 +24,8 @@ import java.util.Set;
 
 import org.apache.logging.log4j.message.Message;
 
-import org.apache.geode.internal.logging.EntriesCollection;
+import org.apache.geode.cache.Region;
+import org.apache.geode.internal.cache.EntriesCollection;
 
 /**
  * Handles messages that consist of a format string containing '{}' to represent each replaceable
@@ -467,7 +468,7 @@ public class GemFireParameterizedMessage implements Message {
         }
         // str.append(Arrays.deepToString((Object[]) o));
       }
-    } else if (o instanceof Map && !(o instanceof EntriesCollection)) {
+    } else if (o instanceof Map && !(o instanceof Region)) {
       // GEODE: do NOT use Map handling if instanceof Geode Region
       // special handling of container Map
       final String id = identityToString(o);
@@ -494,7 +495,7 @@ public class GemFireParameterizedMessage implements Message {
         str.append('}');
       }
     } else if (o instanceof Collection && !(o instanceof EntriesCollection)) {
-      // GEODE: do NOT use Collection handling if instanceof Geode EntriesSet
+      // GEODE: do NOT use Collection handling if instanceof Geode EntriesCollection
       // special handling of container Collection
       final String id = identityToString(o);
       if (dejaVu.contains(id)) {
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessageFactory.java b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/message/GemFireParameterizedMessageFactory.java
similarity index 86%
rename from geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessageFactory.java
rename to geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/message/GemFireParameterizedMessageFactory.java
index 96b1b1f..c041049 100755
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/log4j/message/GemFireParameterizedMessageFactory.java
+++ b/geode-log4j/src/main/java/org/apache/geode/logging/log4j/internal/impl/message/GemFireParameterizedMessageFactory.java
@@ -1,7 +1,7 @@
 /*
  * 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
+ * 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
  *
@@ -9,10 +9,10 @@
  *
  * 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.
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
  */
-package org.apache.geode.internal.logging.log4j.message;
+package org.apache.geode.logging.log4j.internal.impl.message;
 
 import org.apache.logging.log4j.message.AbstractMessageFactory;
 import org.apache.logging.log4j.message.Message;
@@ -42,9 +42,13 @@ public class GemFireParameterizedMessageFactory extends AbstractMessageFactory {
    * Instance of StringFormatterMessageFactory.
    */
   @Immutable
-  public static final GemFireParameterizedMessageFactory INSTANCE =
+  private static final GemFireParameterizedMessageFactory INSTANCE =
       new GemFireParameterizedMessageFactory();
 
+  public static GemFireParameterizedMessageFactory get() {
+    return INSTANCE;
+  }
+
   /**
    * Creates {@link ParameterizedMessage} instances.
    *
diff --git a/geode-logging/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java b/geode-log4j/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
similarity index 94%
rename from geode-logging/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
rename to geode-log4j/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
index af6bcee..1715c70 100644
--- a/geode-logging/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
+++ b/geode-log4j/src/test/java/org/apache/geode/internal/logging/LogServiceTest.java
@@ -23,8 +23,8 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TestName;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
-import org.apache.geode.internal.logging.log4j.message.GemFireParameterizedMessageFactory;
+import org.apache.geode.logging.log4j.internal.FastLogger;
+import org.apache.geode.logging.log4j.internal.impl.message.GemFireParameterizedMessageFactory;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
diff --git a/geode-logging/src/test/java/org/apache/geode/logging/log4j/internal/FastLoggerTest.java b/geode-log4j/src/test/java/org/apache/geode/logging/log4j/internal/FastLoggerTest.java
similarity index 99%
rename from geode-logging/src/test/java/org/apache/geode/logging/log4j/internal/FastLoggerTest.java
rename to geode-log4j/src/test/java/org/apache/geode/logging/log4j/internal/FastLoggerTest.java
index 08ad881..d1fe09e 100755
--- a/geode-logging/src/test/java/org/apache/geode/logging/log4j/internal/FastLoggerTest.java
+++ b/geode-log4j/src/test/java/org/apache/geode/logging/log4j/internal/FastLoggerTest.java
@@ -37,7 +37,6 @@ import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 import org.mockito.quality.Strictness;
 
-import org.apache.geode.internal.logging.log4j.FastLogger;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
diff --git a/geode-log4j/src/test/resources/expected-pom.xml b/geode-log4j/src/test/resources/expected-pom.xml
index 41217bd..fe4a2b2 100644
--- a/geode-log4j/src/test/resources/expected-pom.xml
+++ b/geode-log4j/src/test/resources/expected-pom.xml
@@ -47,18 +47,13 @@
   </dependencyManagement>
   <dependencies>
     <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-core</artifactId>
-      <scope>runtime</scope>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+      <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
+      <artifactId>geode-core</artifactId>
       <scope>runtime</scope>
     </dependency>
     <dependency>
diff --git a/geode-logging/build.gradle b/geode-logging/build.gradle
deleted file mode 100644
index 7e42456..0000000
--- a/geode-logging/build.gradle
+++ /dev/null
@@ -1,65 +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.
- */
-
-apply from: "${rootDir}/${scriptDir}/standard-subproject-configuration.gradle"
-
-apply from: "${project.projectDir}/../gradle/publish-java.gradle"
-
-dependencies {
-    compile(platform(project(':boms:geode-all-bom')))
-
-    // Geode-common has annotations and other pieces used by geode-logging
-    api(project(':geode-common'))
-
-    implementation('org.apache.logging.log4j:log4j-api')
-
-    testCompile(project(':geode-junit')) {
-        exclude module: 'geode-logging'
-    }
-    testCompile(project(':geode-concurrency-test'))
-
-    testCompile('org.mockito:mockito-core')
-    testCompile('junit:junit')
-    testCompile('org.assertj:assertj-core')
-
-    testRuntime(project(':geode-old-versions'))
-
-    integrationTestCompile(project(':geode-junit')) {
-        exclude module: 'geode-logging'
-    }
-    integrationTestCompile(project(':geode-dunit')) {
-        exclude module: 'geode-logging'
-    }
-    integrationTestCompile('pl.pragmatists:JUnitParams')
-    distributedTestCompile(project(':geode-junit')) {
-        exclude module: 'geode-logging'
-    }
-    distributedTestCompile(project(':geode-dunit')) {
-        exclude module: 'geode-logging'
-    }
-    distributedTestCompile('pl.pragmatists:JUnitParams')
-    distributedTestRuntime(project(':geode-old-versions'))
-    upgradeTestRuntime(project(':geode-old-versions'))
-
-}
-
-distributedTest {
-    // Some tests have inner tests that should be ignored
-    exclude "**/*\$*.class"
-}
-
-
diff --git a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingExecutors.java b/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingExecutors.java
deleted file mode 100644
index 8c9f68a..0000000
--- a/geode-logging/src/main/java/org/apache/geode/internal/logging/LoggingExecutors.java
+++ /dev/null
@@ -1,114 +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.geode.internal.logging;
-
-import static java.util.concurrent.TimeUnit.SECONDS;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ForkJoinPool;
-import java.util.concurrent.ForkJoinWorkerThread;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-public class LoggingExecutors {
-  public static ScheduledExecutorService newScheduledThreadPool(String threadName, int poolSize,
-      boolean executeDelayedTasks) {
-    ScheduledThreadPoolExecutor result =
-        new ScheduledThreadPoolExecutor(poolSize, new LoggingThreadFactory(threadName));
-    result.setExecuteExistingDelayedTasksAfterShutdownPolicy(executeDelayedTasks);
-    return result;
-  }
-
-  public static ExecutorService newFixedThreadPoolWithFeedSize(String threadName,
-      int poolSize, int feedSize) {
-    LinkedBlockingQueue<Runnable> feed = new LinkedBlockingQueue<>(feedSize);
-    RejectedExecutionHandler rejectionHandler = new ThreadPoolExecutor.CallerRunsPolicy();
-    ThreadFactory threadFactory = new LoggingThreadFactory(threadName);
-    ThreadPoolExecutor executor = new ThreadPoolExecutor(poolSize, poolSize, 10, SECONDS, feed,
-        threadFactory, rejectionHandler);
-    executor.allowCoreThreadTimeOut(true);
-    return executor;
-  }
-
-  public static ExecutorService newSingleThreadExecutor(String threadName, boolean isDaemon) {
-    ThreadFactory threadFactory = new LoggingThreadFactory(threadName, isDaemon);
-    return new ThreadPoolExecutor(1, 1, 0L, SECONDS,
-        new LinkedBlockingQueue<Runnable>(),
-        threadFactory);
-  }
-
-  public static ExecutorService newCachedThreadPool(String threadName, boolean isDaemon) {
-    ThreadFactory threadFactory = new LoggingThreadFactory(threadName, isDaemon);
-    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
-        60L, TimeUnit.SECONDS,
-        new SynchronousQueue<Runnable>(),
-        threadFactory);
-  }
-
-  public static ExecutorService newWorkStealingPool(String threadName, int maxParallelThreads) {
-    final ForkJoinPool.ForkJoinWorkerThreadFactory factory = pool -> {
-      ForkJoinWorkerThread worker = ForkJoinPool.defaultForkJoinWorkerThreadFactory.newThread(pool);
-      LoggingUncaughtExceptionHandler.setOnThread(worker);
-      worker.setName(threadName + worker.getPoolIndex());
-      return worker;
-    };
-    return new ForkJoinPool(maxParallelThreads, factory, null, true);
-  }
-
-  public static Executor newThreadOnEachExecute(String threadName) {
-    return command -> new LoggingThread(threadName, command).start();
-  }
-
-  public static ScheduledExecutorService newScheduledThreadPool(String threadName, int poolSize) {
-    return newScheduledThreadPool(threadName, poolSize, true);
-  }
-
-  public static ScheduledExecutorService newSingleThreadScheduledExecutor(String threadName) {
-    return newScheduledThreadPool(threadName, 1);
-  }
-
-  static ThreadPoolExecutor newFixedThreadPool(String threadName, boolean isDaemon,
-      int poolSize, long keepAliveSeconds,
-      BlockingQueue<Runnable> feed) {
-    ThreadFactory threadFactory = new LoggingThreadFactory(threadName, isDaemon);
-    return new ThreadPoolExecutor(poolSize, poolSize,
-        keepAliveSeconds, SECONDS,
-        feed, threadFactory);
-  }
-
-  private static ThreadPoolExecutor newFixedThreadPool(String threadName, boolean isDaemon,
-      long keepAliveSeconds, int poolSize) {
-    LinkedBlockingQueue<Runnable> feed = new LinkedBlockingQueue<>();
-    return newFixedThreadPool(threadName, isDaemon, poolSize, keepAliveSeconds, feed);
-  }
-
-  public static ExecutorService newFixedThreadPool(String threadName, boolean isDaemon,
-      int poolSize) {
-    return newFixedThreadPool(threadName, isDaemon, 0L, poolSize);
-  }
-
-  public static ExecutorService newFixedThreadPoolWithTimeout(String threadName, int poolSize,
-      int keepAliveSeconds) {
-    return newFixedThreadPool(threadName, true, keepAliveSeconds, poolSize);
-  }
-}
diff --git a/geode-logging/src/test/resources/expected-pom.xml b/geode-logging/src/test/resources/expected-pom.xml
deleted file mode 100644
index 0e8d9fb..0000000
--- a/geode-logging/src/test/resources/expected-pom.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <!--
-  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.
-  -->
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.geode</groupId>
-  <artifactId>geode-logging</artifactId>
-  <version>1.11.0-SNAPSHOT</version>
-  <name>Apache Geode</name>
-  <description>Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing</description>
-  <url>http://geode.apache.org</url>
-  <licenses>
-    <license>
-      <name>The Apache Software License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-    </license>
-  </licenses>
-  <scm>
-    <connection>scm:git:https://github.com:apache/geode.git</connection>
-    <developerConnection>scm:git:https://github.com:apache/geode.git</developerConnection>
-    <url>https://github.com/apache/geode</url>
-  </scm>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.apache.geode</groupId>
-        <artifactId>geode-all-bom</artifactId>
-        <version>1.11.0-SNAPSHOT</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-common</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/geode-lucene/build.gradle b/geode-lucene/build.gradle
index 91c4e30..eb65e48 100644
--- a/geode-lucene/build.gradle
+++ b/geode-lucene/build.gradle
@@ -51,7 +51,6 @@ dependencies {
   testCompile(project(':geode-junit')) {
     exclude module: 'geode-core'
   }
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
   compile('org.apache.lucene:lucene-analyzers-common')
diff --git a/geode-lucene/geode-lucene-test/build.gradle b/geode-lucene/geode-lucene-test/build.gradle
index e2f15da..f382117 100644
--- a/geode-lucene/geode-lucene-test/build.gradle
+++ b/geode-lucene/geode-lucene-test/build.gradle
@@ -23,7 +23,6 @@ apply from: "${rootDir}/${scriptDir}/standard-subproject-configuration.gradle"
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
   compile('org.apache.lucene:lucene-core')
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
   compileOnly(project(':geode-lucene'))
diff --git a/geode-lucene/src/test/resources/expected-pom.xml b/geode-lucene/src/test/resources/expected-pom.xml
index 1bdd9e7..320bf22 100644
--- a/geode-lucene/src/test/resources/expected-pom.xml
+++ b/geode-lucene/src/test/resources/expected-pom.xml
@@ -121,11 +121,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-memcached/build.gradle b/geode-memcached/build.gradle
index ec382b9..6cc76b0 100644
--- a/geode-memcached/build.gradle
+++ b/geode-memcached/build.gradle
@@ -22,7 +22,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 dependencies {
   implementation(platform(project(':boms:geode-all-bom')))
   implementation(project(':geode-core'))
-  implementation(project(':geode-logging'))
   implementation('org.apache.logging.log4j:log4j-api')
   implementation('com.github.stephenc.findbugs:findbugs-annotations')
 
diff --git a/geode-memcached/src/test/resources/expected-pom.xml b/geode-memcached/src/test/resources/expected-pom.xml
index 16bafe4..c07ff19 100644
--- a/geode-memcached/src/test/resources/expected-pom.xml
+++ b/geode-memcached/src/test/resources/expected-pom.xml
@@ -52,11 +52,6 @@
       <scope>runtime</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <scope>runtime</scope>
diff --git a/geode-old-client-support/build.gradle b/geode-old-client-support/build.gradle
index 1ceb25a..12fad07 100644
--- a/geode-old-client-support/build.gradle
+++ b/geode-old-client-support/build.gradle
@@ -23,7 +23,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 dependencies {
   implementation(platform(project(':boms:geode-all-bom')))
   implementation(project(':geode-core'))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   distributedTestImplementation(project(':geode-dunit')){
     exclude module: 'geode-core'
diff --git a/geode-old-client-support/src/test/resources/expected-pom.xml b/geode-old-client-support/src/test/resources/expected-pom.xml
index b051b6c..1d88eb4 100644
--- a/geode-old-client-support/src/test/resources/expected-pom.xml
+++ b/geode-old-client-support/src/test/resources/expected-pom.xml
@@ -53,11 +53,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-protobuf/build.gradle b/geode-protobuf/build.gradle
index ea9d0c2..9c0925a 100644
--- a/geode-protobuf/build.gradle
+++ b/geode-protobuf/build.gradle
@@ -22,7 +22,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
   compile(project(':geode-protobuf-messages'))
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufOpsProcessor.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufOpsProcessor.java
index b172530..189e89e 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufOpsProcessor.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/ProtobufOpsProcessor.java
@@ -34,7 +34,7 @@ import org.apache.geode.security.NotAuthorizedException;
 @Experimental
 public class ProtobufOpsProcessor {
   private final ProtobufOperationContextRegistry protobufOperationContextRegistry;
-  private static final Logger logger = LogService.getLogger();
+  private static final Logger logger = LogService.getLogger(ProtobufOpsProcessor.class);
 
   public ProtobufOpsProcessor(ProtobufOperationContextRegistry protobufOperationContextRegistry) {
     this.protobufOperationContextRegistry = protobufOperationContextRegistry;
diff --git a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/state/RequireVersion.java b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/state/RequireVersion.java
index 2a83b0d..7c06b8e 100644
--- a/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/state/RequireVersion.java
+++ b/geode-protobuf/src/main/java/org/apache/geode/internal/protocol/protobuf/v1/state/RequireVersion.java
@@ -27,12 +27,13 @@ import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.protocol.protobuf.v1.BasicTypes;
 import org.apache.geode.internal.protocol.protobuf.v1.MessageExecutionContext;
 import org.apache.geode.internal.protocol.protobuf.v1.ProtobufOperationContext;
+import org.apache.geode.internal.protocol.protobuf.v1.ProtobufOpsProcessor;
 import org.apache.geode.internal.protocol.protobuf.v1.operations.ProtocolVersionHandler;
 import org.apache.geode.internal.protocol.protobuf.v1.state.exception.ConnectionStateException;
 import org.apache.geode.internal.security.SecurityService;
 
 public class RequireVersion implements ConnectionState {
-  private static final Logger logger = LogService.getLogger();
+  private static final Logger logger = LogService.getLogger(ProtobufOpsProcessor.class);
   private final SecurityService securityService;
 
   public RequireVersion(SecurityService securityService) {
diff --git a/geode-protobuf/src/test/resources/expected-pom.xml b/geode-protobuf/src/test/resources/expected-pom.xml
index 7e61626..d222eba 100644
--- a/geode-protobuf/src/test/resources/expected-pom.xml
+++ b/geode-protobuf/src/test/resources/expected-pom.xml
@@ -73,11 +73,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-rebalancer/build.gradle b/geode-rebalancer/build.gradle
index ace2859..547a37a 100644
--- a/geode-rebalancer/build.gradle
+++ b/geode-rebalancer/build.gradle
@@ -24,7 +24,6 @@ dependencies {
   compile(platform(project(':boms:geode-all-bom')))
   compile(project(':geode-core'))
   implementation(project(':geode-serialization'))
-  implementation(project(':geode-logging'))
   integrationTestCompile(project(':geode-junit')) {
     exclude module: 'geode-core'
   }
diff --git a/geode-rebalancer/src/test/resources/expected-pom.xml b/geode-rebalancer/src/test/resources/expected-pom.xml
index c3dc713..0a6c90b 100644
--- a/geode-rebalancer/src/test/resources/expected-pom.xml
+++ b/geode-rebalancer/src/test/resources/expected-pom.xml
@@ -80,10 +80,5 @@
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
   </dependencies>
 </project>
diff --git a/geode-redis/build.gradle b/geode-redis/build.gradle
index dc1ec1c..24f723b 100644
--- a/geode-redis/build.gradle
+++ b/geode-redis/build.gradle
@@ -22,7 +22,6 @@ apply from: "${project.projectDir}/../gradle/publish-java.gradle"
 dependencies {
   compile(platform(project(':boms:geode-all-bom')))
   implementation(project(':geode-serialization'))
-  implementation(project(':geode-logging'))
   compile(project(':geode-core'))
   compile('com.github.davidmoten:geo')
   compile('io.netty:netty-all')
diff --git a/geode-redis/src/test/resources/expected-pom.xml b/geode-redis/src/test/resources/expected-pom.xml
index c30baa9..d971930 100644
--- a/geode-redis/src/test/resources/expected-pom.xml
+++ b/geode-redis/src/test/resources/expected-pom.xml
@@ -71,10 +71,5 @@
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
   </dependencies>
 </project>
diff --git a/geode-wan/build.gradle b/geode-wan/build.gradle
index 986a503..81f77f7 100644
--- a/geode-wan/build.gradle
+++ b/geode-wan/build.gradle
@@ -26,7 +26,6 @@ dependencies {
     // See GEODE-6128 -- ignore xml-apis in linter to avoid changes with every run.
     upgradeTestCompile('xml-apis:xml-apis:1.4.01')
   }
-  implementation(project(':geode-logging'))
   implementation(project(':geode-serialization'))
   compile(project(':geode-core'))
 
diff --git a/geode-wan/src/test/resources/expected-pom.xml b/geode-wan/src/test/resources/expected-pom.xml
index 5291908..2df3674 100644
--- a/geode-wan/src/test/resources/expected-pom.xml
+++ b/geode-wan/src/test/resources/expected-pom.xml
@@ -53,11 +53,6 @@
     </dependency>
     <dependency>
       <groupId>org.apache.geode</groupId>
-      <artifactId>geode-logging</artifactId>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geode</groupId>
       <artifactId>geode-serialization</artifactId>
       <scope>runtime</scope>
     </dependency>
diff --git a/geode-web-api/build.gradle b/geode-web-api/build.gradle
index b141a5e..b0a7b54 100644
--- a/geode-web-api/build.gradle
+++ b/geode-web-api/build.gradle
@@ -28,7 +28,6 @@ dependencies {
   compileOnly(platform(project(':boms:geode-all-bom')))
 
   compileOnly(project(':geode-core'))
-  compileOnly(project(':geode-logging'))
   compileOnly(project(':geode-serialization'))
 
   compileOnly('javax.servlet:javax.servlet-api')
diff --git a/geode-web-management/build.gradle b/geode-web-management/build.gradle
index 7013247..cb4bf81 100644
--- a/geode-web-management/build.gradle
+++ b/geode-web-management/build.gradle
@@ -47,7 +47,6 @@ dependencies {
   compile(platform(project(':boms:geode-all-bom'))) {
     exclude module: "jackson-annotations"
   }
-  compileOnly(project(':geode-logging'))
   compileOnly(project(':geode-serialization'))
   compileOnly(project(':geode-core'))
 
diff --git a/geode-web/build.gradle b/geode-web/build.gradle
index a02d491..306f73b 100644
--- a/geode-web/build.gradle
+++ b/geode-web/build.gradle
@@ -30,7 +30,6 @@ dependencies {
   //transitive dependencies from geode-web.war. Since geode-web.war is ony run within
   //a container that has geode-core on the classpath, is prevents duplicating jars. geode-core
   //in particular should not be duplicated in the war.
-  providedCompile(project(':geode-logging'))
   providedCompile(project(path: ':geode-core')) {
     //spring-web is excluded from the providedCompile configuration to ensure
     //that it is included as part of the war. spring-web must be loaded with the war's
@@ -42,7 +41,7 @@ dependencies {
   providedCompile(platform(project(':boms:geode-all-bom')))
   providedCompile('javax.servlet:javax.servlet-api')
   providedCompile('org.apache.logging.log4j:log4j-api')
-
+  
   implementation('org.springframework:spring-webmvc')
 
   runtimeOnly('org.springframework:spring-aspects') {
diff --git a/settings.gradle b/settings.gradle
index 0a1ba3d..1669d7e 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -26,7 +26,6 @@ include 'geode-common'
 include 'geode-unsafe'
 include 'geode-junit'
 include 'geode-dunit'
-include 'geode-logging'
 include 'geode-serialization'
 include 'geode-core'
 include 'geode-log4j'