You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2018/11/16 17:42:45 UTC

[geode] branch develop updated: Revert GEODE-2644 because offline diskstore commands generate info level logs

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

klund 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 743c925  Revert GEODE-2644 because offline diskstore commands generate info level logs
743c925 is described below

commit 743c925efa608719aca1ee6249d3c8ee3901905c
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Fri Nov 16 09:33:45 2018 -0800

    Revert GEODE-2644 because offline diskstore commands generate info level logs
    
    GFSH forks the offline diskstore commands in a JVM using log4j2-cli.xml
    which sets the log level to WARN. However, the forked JVM creates a
    Cache which then starts generating info level statements to STDOUT.
    
    Revert "GEODE-2644: Remove log level from MonitorQueryUnderContentionBenchmark"
    This reverts commit 6691d310e1263966991e584f712156d919dabecf.
    
    Revert "GEODE-2644: Update session state caching dependencies for logging"
    This reverts commit 688f58a4a75cc1297faa1dda201b971346c3a9fe.
    
    Revert "GEODE-5637: Fix flaky SingleHopClientExecutorWithLoggingIntegrationTest"
    This reverts commit 0a8f3dffa1ebaa618fafecc15bbc92ba8ba83696.
    
    Revert "GEODE-2644: Make LogWriterAppender optional and support log4j2.xml"
    This reverts commit 591f3f7840ce38c6100bff2040f396ad2469175e.
    
    Revert "GEODE-2644: Expand DistributedSystemMXBean tests"
    This reverts commit cd2bba13e2fb7e79f7634053a6c612050b328e11.
    
    Revert "GEODE-2644: Make AlertAppender optional and support log4j2.xml"
    This reverts commit 02c3cae1d38098259ff6aa4635c6e74f795bdc50.
    
    Revert "GEODE-2644: Add LogConfig and StatisticsConfig for logging"
    This reverts commit a77c94b349b3ed7fc873fc29f6852f9936843790.
    
    Revert "GEODE-2644: Add AlertingTest JUnit Category"
    This reverts commit 731cd2a7d35b086d34f8bbcb94a83c40739ae8ee.
    
    Revert "GEODE-2644: Add LogFileAssert and LogLevelAssert assertions"
    This reverts commit 5e61da5301469cdbd71ac186573f56c38e9a6cf0.
    
    Revert "GEODE-2644: Cleanup logging related files"
    This reverts commit 763e4177f201eff9b140654e6858152a1a184b8c.
    
    Revert "GEODE-2644: Define interfaces for new Log4j2 Appenders"
    This reverts commit efd8a14027195b6dae1dd3e4d53a33696ed318bb.
---
 extensions/geode-modules-assembly/build.gradle     |    1 -
 .../release/session/bin/modify_war                 |    1 -
 .../apache/geode/session/tests/TomcatInstall.java  |    4 +-
 .../GfshStartLocatorLogAcceptanceTest.java         |   36 +-
 .../org/apache/geode/annotations/TestingOnly.java  |    2 +-
 .../alerting/AlertingServiceDistributedTest.java   |  399 -----
 ...rtingServiceWithoutListenerDistributedTest.java |  217 ---
 .../LoggingWithReconnectDistributedTest.java       |  210 ---
 .../management/DistributedSystemDUnitTest.java     |  575 +++++++
 .../DistributedSystemMXBeanDistributedTest.java    |  202 ---
 ...butedSystemMXBeanWithAlertsDistributedTest.java |  495 ------
 ...stemMXBeanWithNotificationsDistributedTest.java |  243 ---
 .../DeprecatedAgentLauncherIntegrationTest.java    |   11 +-
 ...opClientExecutorWithLoggingIntegrationTest.java |   36 +-
 .../LocatorLauncherIntegrationTestCase.java        |    2 +-
 .../internal/InternalLocatorIntegrationTest.java   |   76 +
 .../gms/messenger/JGroupsMessengerJUnitTest.java   |    9 +-
 .../AlertListenerRegistrationIntegrationTest.java  |  183 ---
 .../AlertingServiceWithClusterIntegrationTest.java |  274 ----
 .../AlertingServiceWithLonerIntegrationTest.java   |   89 --
 .../logging/BannerLoggingIntegrationTest.java      |  129 --
 ...st.java => CacheLogRollingIntegrationTest.java} |   33 +-
 .../logging/ConfigurationInfoIntegrationTest.java  |   42 -
 .../logging/ConfigurationIntegrationTest.java      |  133 --
 .../DistributedSystemLogFileIntegrationTest.java   | 1152 ++++++++++++++
 .../logging/LocatorLogFileIntegrationTest.java     |  123 ++
 .../LogLevelChangesWithCacheIntegrationTest.java   |  150 --
 ...hangesWithDistributedSystemIntegrationTest.java |  167 --
 .../logging/LogServiceIntegrationTest.java         |  236 +++
 ...oggingWithDistributedSystemIntegrationTest.java | 1597 --------------------
 .../logging/LoggingWithLocatorIntegrationTest.java |  207 ---
 .../LoggingWithLocatorLauncherIntegrationTest.java |   65 -
 .../LoggingWithServerLauncherIntegrationTest.java  |   65 -
 .../ManagerLogWriterFactoryIntegrationTest.java    |  152 --
 .../logging/MergeLogFilesIntegrationTest.java      |    2 +-
 .../geode/internal/logging/NonBlankStrings.java    |   27 -
 ...StartupConfigurationLoggingIntegrationTest.java |  159 --
 ...stemOutRuleAndSystemErrRuleIntegrationTest.java |   98 --
 .../log4j/AlertAppenderIntegrationTest.java        |  261 ----
 .../BothLogWriterAppendersIntegrationTest.java     |  180 ---
 .../CacheWithDefaultAppendersIntegrationTest.java  |   96 --
 ...gurationWithLogLevelChangesIntegrationTest.java |  226 ---
 ...penderWithLoggerContextRuleIntegrationTest.java |   70 +-
 ...leAppenderWithSystemOutRuleIntegrationTest.java |  182 +++
 ...a => CustomConfigWithCacheIntegrationTest.java} |   30 +-
 ...CustomConfigWithLogServiceIntegrationTest.java} |   32 +-
 ...mWithBothLogWriterAppendersIntegrationTest.java |  203 ---
 ...edSystemWithLogLevelChangesIntegrationTest.java |  207 ---
 .../logging/log4j/FastLoggerIntegrationTest.java   |  411 +++--
 ...FastLoggerWithDefaultConfigIntegrationTest.java |   53 +-
 ...reVerboseMarkerFilterAcceptIntegrationTest.java |   26 +-
 ...fireVerboseMarkerFilterDenyIntegrationTest.java |   26 +-
 .../log4j/GeodeConsoleAppenderIntegrationTest.java |  210 ---
 ...odeConsoleAppenderWithCacheIntegrationTest.java |  168 --
 ...leAppenderWithSystemOutRuleIntegrationTest.java |   98 --
 ...deVerboseMarkerFilterAcceptIntegrationTest.java |   26 +-
 ...eodeVerboseMarkerFilterDenyIntegrationTest.java |   26 +-
 .../log4j/LogWriterAppenderIntegrationTest.java    |  341 +++--
 ...LogWriterAppenderWithLimitsIntegrationTest.java |  147 --
 ...AppenderWithMemberNameInXmlIntegrationTest.java |  148 --
 .../SecurityLogWriterAppenderIntegrationTest.java  |  136 --
 .../DistributedSystemMXBeanIntegrationTest.java    |   93 +-
 .../MemberMXBeanShowLogIntegrationTest.java        |  186 ---
 .../ChangeLogLevelFunctionIntegrationTest.java     |  164 --
 ...ntExecutorWithLoggingIntegrationTest_log4j2.xml |   38 -
 .../apache/geode/codeAnalysis/excludedClasses.txt  |    9 +-
 .../log4j/AlertAppenderIntegrationTest_log4j2.xml  |   36 -
 ...othLogWriterAppendersIntegrationTest_log4j2.xml |   44 -
 ...onWithLogLevelChangesIntegrationTest_log4j2.xml |   38 -
 ...WithLoggerContextRuleIntegrationTest_log4j2.xml |   26 +-
 ...derWithSystemOutRuleIntegrationTest_log4j2.xml} |   19 +-
 ...ustomConfigWithCacheIntegrationTest_log4j2.xml} |    2 +-
 ...ConfigWithLogServiceIntegrationTest_log4j2.xml} |    2 +-
 ...othLogWriterAppendersIntegrationTest_log4j2.xml |   44 -
 ...emWithLogLevelChangesIntegrationTest_log4j2.xml |   38 -
 ...oseMarkerFilterAcceptIntegrationTest_log4j2.xml |    2 +-
 ...rboseMarkerFilterDenyIntegrationTest_log4j2.xml |    2 +-
 .../GeodeConsoleAppenderIntegrationTest_log4j2.xml |   38 -
 ...nderWithSystemOutRuleIntegrationTest_log4j2.xml |   38 -
 ...oseMarkerFilterAcceptIntegrationTest_log4j2.xml |    2 +-
 ...rboseMarkerFilterDenyIntegrationTest_log4j2.xml |    2 +-
 .../LogWriterAppenderIntegrationTest_log4j2.xml    |   38 -
 ...terAppenderWithLimitsIntegrationTest_log4j2.xml |   38 -
 ...erWithMemberNameInXmlIntegrationTest_log4j2.xml |   38 -
 ...rityLogWriterAppenderIntegrationTest_log4j2.xml |   39 -
 .../MonitorQueryUnderContentionBenchmark.java      |    8 +
 .../logging/log4j/CacheLoggingBenchmark.java       |  116 --
 .../logging/log4j/LogWriterAppenderBenchmark.java  |  124 --
 .../admin/internal/AdminDistributedSystemImpl.java |   27 +-
 .../internal/DistributedSystemConfigImpl.java      |   46 -
 .../apache/geode/admin/jmx/internal/AgentImpl.java |  111 +-
 .../internal/AbstractDistributionConfig.java       |    5 -
 .../internal/ClusterDistributionManager.java       |   21 +-
 .../distributed/internal/DistributionConfig.java   |   11 +-
 .../distributed/internal/DistributionManager.java  |    8 +-
 .../internal/InternalDistributedSystem.java        |  151 +-
 .../distributed/internal/InternalLocator.java      |  107 +-
 .../internal/LonerDistributionManager.java         |    7 -
 .../internal/RuntimeDistributionConfigImpl.java    |   12 +-
 .../distributed/internal/direct/DirectChannel.java |    5 +-
 .../membership/gms/messenger/JGroupsMessenger.java |    5 +-
 .../membership/gms/mgr/GMSMembershipManager.java   |    2 +-
 .../java/org/apache/geode/internal/Banner.java     |   94 +-
 .../apache/geode/internal/DistributionLocator.java |    1 +
 .../apache/geode/internal/VersionDescription.java  |   37 +-
 .../remote/AdminConsoleDisconnectMessage.java      |   31 +-
 .../internal/admin/remote/AdminConsoleMessage.java |   21 +-
 .../admin/remote/AlertLevelChangeMessage.java      |   12 +-
 .../admin/remote/AlertListenerMessage.java         |   44 -
 .../internal/admin/remote/TailLogResponse.java     |   38 +-
 .../apache/geode/internal/alerting/AlertLevel.java |   53 -
 .../alerting/AlertListenerMessageFactory.java      |   50 -
 .../geode/internal/alerting/AlertMessaging.java    |  100 --
 .../geode/internal/alerting/AlertingAction.java    |   38 -
 .../geode/internal/alerting/AlertingProvider.java  |   31 -
 .../alerting/AlertingProviderRegistry.java         |   80 -
 .../geode/internal/alerting/AlertingService.java   |   57 -
 .../geode/internal/alerting/AlertingSession.java   |  107 --
 .../internal/alerting/AlertingSessionListener.java |   27 -
 .../alerting/AlertingSessionListeners.java         |   78 -
 .../internal/alerting/NullAlertingProvider.java    |   50 -
 .../internal/alerting/NullAlertingService.java     |   45 -
 .../geode/internal/logging/Configuration.java      |  237 ---
 .../geode/internal/logging/ConfigurationInfo.java  |   56 -
 .../geode/internal/logging/DateFormatter.java      |   15 +-
 .../geode/internal/logging/GemFireFormatter.java   |   37 +-
 .../geode/internal/logging/GemFireHandler.java     |   24 +-
 .../geode/internal/logging/InternalLogWriter.java  |    2 +
 .../geode/internal/logging/LocalLogWriter.java     |    4 +-
 .../apache/geode/internal/logging/LogConfig.java   |   57 +-
 .../geode/internal/logging/LogConfigListener.java  |   23 -
 .../geode/internal/logging/LogConfigSupplier.java  |   35 +-
 .../org/apache/geode/internal/logging/LogFile.java |   49 -
 .../geode/internal/logging/LogFileParser.java      |  164 +-
 .../geode/internal/logging/LogMessageRegex.java    |  106 --
 .../apache/geode/internal/logging/LogService.java  |  249 ++-
 .../geode/internal/logging/LogWriterFactory.java   |   81 +-
 .../geode/internal/logging/LogWriterImpl.java      |   16 +-
 .../geode/internal/logging/LogWriterLevel.java     |   40 +-
 .../geode/internal/logging/LoggingSession.java     |  119 --
 .../internal/logging/LoggingSessionListener.java   |   58 -
 .../internal/logging/LoggingSessionListeners.java  |  100 --
 .../geode/internal/logging/LoggingThread.java      |    7 +-
 .../internal/logging/LoggingThreadFactory.java     |   14 +-
 .../geode/internal/logging/LoggingThreadGroup.java |   83 +-
 .../logging/LoggingUncaughtExceptionHandler.java   |   36 +-
 .../geode/internal/logging/ManagerLogWriter.java   |   55 +-
 .../internal/logging/ManagerLogWriterFactory.java  |  176 ---
 .../geode/internal/logging/MergeLogFiles.java      |  222 +--
 .../apache/geode/internal/logging/NullLogFile.java |   53 -
 .../geode/internal/logging/NullLogWriter.java      |   58 -
 .../geode/internal/logging/NullLoggingSession.java |   47 -
 .../geode/internal/logging/NullProviderAgent.java  |   45 -
 .../geode/internal/logging/ProviderAgent.java      |   39 -
 .../geode/internal/logging/PureLogWriter.java      |    9 +-
 .../geode/internal/logging/SecurityLogConfig.java  |   32 +-
 .../geode/internal/logging/SecurityLogWriter.java  |   12 +-
 .../internal/logging/SecurityManagerLogWriter.java |   15 +-
 .../geode/internal/logging/SessionContext.java     |   48 -
 .../apache/geode/internal/logging/SortLogFile.java |   59 +-
 .../internal/logging/StandardErrorPrinter.java     |    6 +-
 .../internal/logging/StandardOutputPrinter.java    |    6 +-
 .../internal/logging/log4j/AlertAppender.java      |  474 +++---
 .../geode/internal/logging/log4j/AlertLevel.java   |   61 +
 .../logging/log4j/AlertLevelConverter.java         |   88 --
 .../internal/logging/log4j/AlertListener.java      |   66 -
 .../geode/internal/logging/log4j/Configurator.java |  186 +++
 .../internal/logging/log4j/DebuggableAppender.java |   28 -
 .../logging/log4j/GeodeConsoleAppender.java        |  305 ----
 .../geode/internal/logging/log4j/Log4jAgent.java   |  294 ----
 .../geode/internal/logging/log4j/LogLevel.java     |  162 +-
 .../internal/logging/log4j/LogWriterAppender.java  |  441 ++----
 .../internal/logging/log4j/LogWriterAppenders.java |  293 ++++
 .../logging/log4j/LogWriterLevelConverter.java     |   97 --
 .../internal/logging/log4j/LogWriterLogger.java    |   23 +-
 .../logging/log4j/MemberNamePatternConverter.java  |   64 -
 .../internal/logging/log4j/MemberNameSupplier.java |   32 -
 .../internal/logging/log4j/PausableAppender.java   |   26 -
 .../log4j/message/GemFireParameterizedMessage.java |   15 +-
 .../GemFireParameterizedMessageFactory.java        |    4 +-
 .../security/IntegratedSecurityService.java        |    4 +-
 .../security/shiro/SecurityManagerProvider.java    |    4 +-
 .../internal/statistics/GemFireStatSampler.java    |    7 +-
 .../geode/internal/statistics/HostStatSampler.java |   20 -
 .../internal/statistics/StatArchiveHandler.java    |   21 +-
 .../statistics/StatArchiveHandlerConfig.java       |   16 +-
 .../internal/statistics/StatisticsConfig.java      |   52 -
 .../org/apache/geode/internal/tcp/Connection.java  |    4 +-
 .../apache/geode/internal/tcp/ConnectionTable.java |   22 +-
 .../org/apache/geode/internal/tcp/TCPConduit.java  |    4 +-
 .../management/internal/ManagerStartupMessage.java |    4 +-
 .../internal/beans/MemberMBeanBridge.java          |    9 +-
 .../cli/commands/DiskStoreCommandsUtils.java       |    3 +-
 .../cli/functions/ChangeLogLevelFunction.java      |   28 +-
 geode-core/src/main/resources/log4j2-cli.xml       |    2 +-
 geode-core/src/main/resources/log4j2.xml           |   18 +-
 .../geode/internal/logging/log4j/log4j2-legacy.xml |    2 +-
 .../sanctioned-geode-core-serializables.txt        |    1 +
 .../internal/DistributedSystemConfigImplTest.java  |   57 -
 .../java/org/apache/geode/internal/BannerTest.java |   59 -
 .../geode/internal/alerting/AlertLevelTest.java    |  113 --
 .../alerting/AlertListenerMessageFactoryTest.java  |   68 -
 .../internal/alerting/AlertMessagingTest.java      |  108 --
 .../internal/alerting/AlertingActionTest.java      |   54 -
 .../alerting/AlertingProviderRegistryTest.java     |   94 --
 .../internal/alerting/AlertingServiceTest.java     |   75 -
 .../alerting/NullAlertingProviderTest.java         |   48 -
 .../geode/internal/logging/ConfigurationTest.java  |  382 -----
 ...essageRegexMatchesStartupConfigurationTest.java |  227 ---
 .../internal/logging/LogMessageRegexTest.java      |  242 ---
 .../geode/internal/logging/LogServiceTest.java     |  129 +-
 .../geode/internal/logging/LogWriterImplTest.java  |    3 -
 .../geode/internal/logging/LogWriterLevelTest.java |   73 +-
 .../geode/internal/logging/LoggingSessionTest.java |  219 ---
 .../internal/logging/LoggingThreadFactoryTest.java |    6 -
 .../geode/internal/logging/LoggingThreadTest.java  |    7 -
 .../LoggingUncaughtExceptionHandlerTest.java       |    7 +-
 .../internal/logging/ManagerLogWriterTest.java     |   41 -
 .../geode/internal/logging/SortLogFileTest.java    |    2 +-
 .../internal/logging/log4j/AlertAppenderTest.java  |  314 ++--
 .../logging/log4j/AlertLevelConverterTest.java     |  144 --
 .../internal/logging/log4j/AlertLevelTest.java     |  137 ++
 .../internal/logging/log4j/FastLoggerTest.java     |    2 +-
 .../log4j/HexThreadIdPatternConverterTest.java     |    4 -
 .../geode/internal/logging/log4j/LogLevelTest.java |  183 ++-
 .../logging/log4j/LogWriterLevelConverterTest.java |  132 --
 .../log4j/MemberNamePatternConverterTest.java      |   57 -
 .../org/apache/geode/test/golden/log4j2-test.xml   |    2 +-
 .../tomcat_installing_the_module.html.md.erb       |    1 -
 .../apache/geode/management/MXBeanAwaitility.java  |    0
 .../apache/geode/test/dunit/LogWriterUtils.java    |    4 +-
 .../geode/test/dunit/standalone/DUnitLauncher.java |    9 +-
 .../logging/LogServiceIntegrationTestSupport.java  |   21 +-
 .../internal/logging/TestLogWriterFactory.java     |    5 +-
 .../apache/geode/test/assertj/LogFileAssert.java   |   33 -
 .../apache/geode/test/assertj/LogLevelAssert.java  |   33 -
 .../assertj/internal/AbstractLogFileAssert.java    |  206 ---
 .../assertj/internal/AbstractLogLevelAssert.java   |   46 -
 .../assertj/internal/ShouldBeLessSpecificThan.java |   37 -
 .../geode/test/junit/categories/AlertingTest.java  |   21 -
 .../accessible/AccessibleTemporaryFolder.java      |   35 -
 .../apache/geode/test/process/ProcessWrapper.java  |    2 +-
 .../security/LogNoPasswordIntegrationTest.java}    |    2 +-
 243 files changed, 5724 insertions(+), 16735 deletions(-)

diff --git a/extensions/geode-modules-assembly/build.gradle b/extensions/geode-modules-assembly/build.gradle
index fb3ad0a..c55d161 100644
--- a/extensions/geode-modules-assembly/build.gradle
+++ b/extensions/geode-modules-assembly/build.gradle
@@ -210,7 +210,6 @@ task distAppServer(type: Zip, dependsOn: [':extensions:geode-modules-session:jar
       filter(ReplaceTokens, tokens:['TX_VERSION': project.'javax.transaction-api.version'])
       filter(ReplaceTokens, tokens:['JGROUPS_VERSION': project.'jgroups.version'])
       filter(ReplaceTokens, tokens:['SHIRO_VERSION': project.'shiro.version'])
-      filter(ReplaceTokens, tokens:['COMMONS_IO_VERSION': project.'commons-io.version'])
       filter(ReplaceTokens, tokens:['COMMONS_LANG_VERSION': project.'commons-lang3.version'])
       filter(ReplaceTokens, tokens:['COMMONS_VALIDATOR_VERSION': project.'commons-validator.version'])
     }
diff --git a/extensions/geode-modules-assembly/release/session/bin/modify_war b/extensions/geode-modules-assembly/release/session/bin/modify_war
index e74b088..f7acc11 100755
--- a/extensions/geode-modules-assembly/release/session/bin/modify_war
+++ b/extensions/geode-modules-assembly/release/session/bin/modify_war
@@ -268,7 +268,6 @@ OTHER_JARS=(${GEODE}/lib/geode-core-${VERSION}.jar \
     ${GEODE}/lib/fastutil-@FASTUTIL_VERSION@.jar \
     ${GEODE}/lib/javax.transaction-api-@TX_VERSION@.jar \
     ${GEODE}/lib/jgroups-@JGROUPS_VERSION@.jar \
-    ${GEODE}/lib/commons-io-@COMMONS_IO_VERSION@.jar \
     ${GEODE}/lib/commons-lang3-@COMMONS_LANG_VERSION@.jar \
     ${GEODE}/lib/shiro-core-@SHIRO_VERSION@.jar \
     ${GEODE}/lib/commons-validator-@COMMONS_VALIDATOR_VERSION@.jar \
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 8da6540..c351d29 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
@@ -91,8 +91,8 @@ public class TomcatInstall extends ContainerInstall {
   }
 
   private static final String[] tomcatRequiredJars =
-      {"antlr", "commons-io", "commons-lang", "commons-validator", "fastutil", "geode-core",
-          "javax.transaction-api", "jgroups", "log4j-api", "log4j-core", "log4j-jul", "shiro-core"};
+      {"antlr", "commons-lang", "fastutil", "geode-core", "javax.transaction-api", "jgroups",
+          "log4j-api", "log4j-core", "log4j-jul", "shiro-core", "commons-validator"};
 
   private final TomcatVersion version;
 
diff --git a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/GfshStartLocatorLogAcceptanceTest.java b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/GfshStartLocatorLogAcceptanceTest.java
index 4d85ab9..01a47c9 100644
--- a/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/GfshStartLocatorLogAcceptanceTest.java
+++ b/geode-assembly/src/acceptanceTest/java/org/apache/geode/management/internal/cli/commands/GfshStartLocatorLogAcceptanceTest.java
@@ -14,46 +14,46 @@
  */
 package org.apache.geode.management.internal.cli.commands;
 
-import static org.apache.geode.internal.logging.Configuration.STARTUP_CONFIGURATION;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import java.io.File;
+import java.nio.charset.StandardCharsets;
 
-import org.junit.Before;
+import com.google.common.io.Files;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
-import org.apache.geode.internal.Banner;
-import org.apache.geode.test.assertj.LogFileAssert;
 import org.apache.geode.test.junit.categories.GfshTest;
 import org.apache.geode.test.junit.categories.LoggingTest;
 import org.apache.geode.test.junit.rules.gfsh.GfshExecution;
 import org.apache.geode.test.junit.rules.gfsh.GfshRule;
 import org.apache.geode.test.junit.rules.gfsh.GfshScript;
 
-@Category({LoggingTest.class, GfshTest.class})
+@Category({GfshTest.class, LoggingTest.class})
 public class GfshStartLocatorLogAcceptanceTest {
 
-  private File logFile;
-
   @Rule
   public GfshRule gfshRule = new GfshRule();
 
-  @Before
-  public void setUp() {
-    GfshExecution gfshExecution = GfshScript.of("start locator").execute(gfshRule);
-    File[] files = gfshExecution.getWorkingDir().listFiles();
-    String logName = files[0].getAbsolutePath() + "/" + files[0].getName() + ".log";
-    logFile = new File(logName);
+  @Test
+  public void bannerOnlyLogsOnce() throws Exception {
+    final String banner = "Licensed to the Apache Software Foundation (ASF)";
+    String lines = getExecutionLogs();
+    assertThat(lines.indexOf(banner)).isEqualTo(lines.lastIndexOf(banner));
   }
 
   @Test
-  public void bannerIsLoggedOnlyOnce() {
-    LogFileAssert.assertThat(logFile).containsOnlyOnce(Banner.BannerHeader.displayValues());
+  public void startupConfigsOnlyLogsOnce() throws Exception {
+    final String startupConfigs = "### GemFire Properties using default values ###";
+    String lines = getExecutionLogs();
+    assertThat(lines.indexOf(startupConfigs)).isEqualTo(lines.lastIndexOf(startupConfigs));
   }
 
-  @Test
-  public void startupConfigIsLoggedOnlyOnce() {
-    LogFileAssert.assertThat(logFile).containsOnlyOnce(STARTUP_CONFIGURATION);
+  private String getExecutionLogs() throws Exception {
+    GfshExecution gfshExecution = GfshScript.of("start locator").execute(gfshRule);
+    File[] files = gfshExecution.getWorkingDir().listFiles();
+    String logName = files[0].getAbsolutePath() + "/" + files[0].getName() + ".log";
+    return Files.readLines(new File(logName), StandardCharsets.UTF_8).toString();
   }
 }
diff --git a/geode-common/src/main/java/org/apache/geode/annotations/TestingOnly.java b/geode-common/src/main/java/org/apache/geode/annotations/TestingOnly.java
index da89816..f2a21a1 100644
--- a/geode-common/src/main/java/org/apache/geode/annotations/TestingOnly.java
+++ b/geode-common/src/main/java/org/apache/geode/annotations/TestingOnly.java
@@ -20,7 +20,7 @@ import java.lang.annotation.ElementType;
 import java.lang.annotation.Target;
 
 @Documented
-@Target({ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD})
+@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
 public @interface TestingOnly {
 
   /** Optional description */
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java
deleted file mode 100644
index 7fe2058..0000000
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceDistributedTest.java
+++ /dev/null
@@ -1,399 +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.alerting;
-
-import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
-import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.addListener;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.removeListener;
-import static org.apache.geode.internal.alerting.AlertLevel.NONE;
-import static org.apache.geode.internal.alerting.AlertLevel.SEVERE;
-import static org.apache.geode.management.JMXNotificationType.SYSTEM_ALERT;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedSystemName;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.mbeanServer;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
-import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
-import static org.apache.geode.test.dunit.VM.getController;
-import static org.apache.geode.test.dunit.VM.getVM;
-import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import java.io.Serializable;
-import java.util.Properties;
-
-import javax.management.InstanceNotFoundException;
-import javax.management.JMX;
-import javax.management.Notification;
-import javax.management.NotificationFilter;
-import javax.management.NotificationListener;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.mockito.ArgumentCaptor;
-
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.admin.remote.AlertListenerMessage;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.management.DistributedSystemMXBean;
-import org.apache.geode.management.internal.AlertDetails;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.junit.categories.AlertingTest;
-import org.apache.geode.test.junit.categories.ManagementTest;
-import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
-
-/**
- * Distributed tests for {@link AlertingService} with {@link DistributedSystemMXBean} in the
- * JMX Manager.
- */
-@Category({AlertingTest.class, ManagementTest.class})
-public class AlertingServiceDistributedTest implements Serializable {
-
-  private static final long TIMEOUT = getTimeout().getValueInMS();
-  private static final NotificationFilter SYSTEM_ALERT_FILTER =
-      notification -> notification.getType().equals(SYSTEM_ALERT);
-
-  private static InternalCache cache;
-  private static Logger logger;
-
-  private static AlertListenerMessage.Listener messageListener;
-  private static DistributedSystemMXBean distributedSystemMXBean;
-  private static NotificationListener notificationListener;
-  private static AlertingService alertingService;
-
-  private DistributedMember managerMember;
-
-  private String alertMessage;
-  private String exceptionMessage;
-
-  private String managerName;
-  private String memberName;
-
-  private VM managerVM;
-  private VM memberVM;
-
-  @Rule
-  public DistributedRule distributedRule = new DistributedRule();
-
-  @Rule
-  public SerializableTestName testName = new SerializableTestName();
-
-  @Before
-  public void setUp() throws Exception {
-    alertMessage = "Alerting in " + testName.getMethodName();
-    exceptionMessage = "Exception in " + testName.getMethodName();
-
-    managerName = "Manager in " + testName.getMethodName();
-    memberName = "Member in " + testName.getMethodName();
-
-    managerVM = getVM(0);
-    memberVM = getController();
-
-    managerMember = managerVM.invoke(() -> createManager());
-    memberVM.invoke(() -> createMember());
-
-    addIgnoredException(alertMessage);
-    addIgnoredException(exceptionMessage);
-  }
-
-  @After
-  public void tearDown() {
-    for (VM vm : toArray(managerVM, memberVM)) {
-      vm.invoke(() -> {
-        removeListener(messageListener);
-        cache.close();
-        cache = null;
-        logger = null;
-        messageListener = null;
-        distributedSystemMXBean = null;
-        notificationListener = null;
-        alertingService = null;
-      });
-    }
-  }
-
-  @Test
-  public void distributedSystemMXBeanExists() {
-    managerVM.invoke(() -> {
-      assertThat(distributedSystemMXBean).isNotNull();
-    });
-  }
-
-  @Test
-  public void distributedSystemMXBeanIsRegistered() {
-    managerVM.invoke(() -> {
-      assertThat(mbeanServer.isRegistered(getDistributedSystemName())).isTrue();
-    });
-  }
-
-  @Test
-  public void listenerReceivesAlertFromRemoteMember() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureNotification()).isNotNull();
-    });
-  }
-
-  @Test
-  public void listenerReceivesAlertFromLocalMember() {
-    managerVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureNotification().getMessage()).isEqualTo(alertMessage);
-    });
-  }
-
-  @Test
-  public void notificationMessageFromRemoteMemberIsAlertMessage() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureNotification().getMessage()).isEqualTo(alertMessage);
-    });
-  }
-
-  @Test
-  public void notificationMessageFromLocalMemberIsAlertMessage() {
-    managerVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureNotification().getMessage()).isEqualTo(alertMessage);
-    });
-  }
-
-  @Test
-  public void alertListenerMessageIsStillReceivedAfterRemoveListener() {
-    managerVM.invoke(() -> getPlatformMBeanServer()
-        .removeNotificationListener(getDistributedSystemName(), notificationListener));
-
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      verify(messageListener, timeout(TIMEOUT)).received(isA(AlertListenerMessage.class));
-    });
-  }
-
-  @Test
-  public void alertListenerMessageIsNotReceivedForLevelNone() {
-    changeAlertLevel(NONE);
-
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> verifyNoMoreInteractions(messageListener));
-  }
-
-  @Test
-  public void alertListenerMessageIsNotReceivedForLevelsLowerThanAlertLevel() {
-    memberVM.invoke(() -> {
-      logger.warn(alertMessage);
-      logger.error(alertMessage);
-    });
-
-    managerVM.invoke(() -> verifyNoMoreInteractions(messageListener));
-  }
-
-  @Test
-  public void alertDetailsIsCreatedByAlertMessage() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails()).isNotNull().isInstanceOf(AlertDetails.class);
-    });
-  }
-
-  @Test
-  public void alertDetailsAlertLevelMatchesLogLevel() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getAlertLevel()).isEqualTo(SEVERE.intLevel());
-    });
-  }
-
-  @Test
-  public void alertDetailsMessageMatchesAlertMessage() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getMsg()).isEqualTo(alertMessage);
-    });
-  }
-
-  @Test
-  public void alertDetailsSenderIsNullForLocalAlert() {
-    managerVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getSender()).isNull();
-    });
-  }
-
-  @Test
-  public void alertDetailsSourceContainsThreadName() {
-    String threadName = memberVM.invoke(() -> {
-      logger.fatal(alertMessage);
-      return Thread.currentThread().getName();
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getSource()).contains(threadName);
-    });
-  }
-
-  @Test
-  public void alertDetailsConnectionNameMatchesMemberName() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getConnectionName()).isEqualTo(memberName);
-    });
-  }
-
-  @Test
-  public void alertDetailsExceptionTextIsEmptyByDefault() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getExceptionText()).isEqualTo("");
-    });
-  }
-
-  @Test
-  public void alertDetailsExceptionTextMatchesExceptionMessage() {
-    memberVM.invoke(() -> logger.fatal(alertMessage, new Exception(exceptionMessage)));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getExceptionText()).contains(exceptionMessage);
-    });
-  }
-
-  @Test
-  public void alertDetailsThreadNameMatchesLoggingThreadName() {
-    String threadName = memberVM.invoke(() -> {
-      logger.fatal(alertMessage);
-      return Thread.currentThread().getName();
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getThreadName()).isEqualTo(threadName);
-    });
-  }
-
-  @Test
-  public void alertDetailsThreadIdMatchesLoggingThreadId() {
-    long threadId = memberVM.invoke(() -> {
-      logger.fatal(alertMessage);
-      return Thread.currentThread().getId();
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getTid()).isEqualTo(threadId);
-    });
-  }
-
-  @Test
-  public void alertDetailsMessageTimeIsNotNull() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlertDetails().getMsgTime()).isNotNull();
-    });
-  }
-
-  private DistributedMember createManager() throws InstanceNotFoundException {
-    messageListener = spy(AlertListenerMessage.Listener.class);
-    addListener(messageListener);
-
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, managerName);
-    config.setProperty(JMX_MANAGER, "true");
-    config.setProperty(JMX_MANAGER_START, "true");
-    config.setProperty(JMX_MANAGER_PORT, "0");
-    config.setProperty(HTTP_SERVICE_PORT, "0");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    alertingService = cache.getInternalDistributedSystem().getAlertingService();
-    logger = LogService.getLogger();
-
-    distributedSystemMXBean = JMX.newMXBeanProxy(getPlatformMBeanServer(),
-        getDistributedSystemName(), DistributedSystemMXBean.class);
-
-    notificationListener = spy(NotificationListener.class);
-    getPlatformMBeanServer().addNotificationListener(getDistributedSystemName(),
-        notificationListener, SYSTEM_ALERT_FILTER, null);
-
-    return cache.getDistributedSystem().getDistributedMember();
-  }
-
-  private void createMember() {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, memberName);
-    config.setProperty(JMX_MANAGER, "false");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    alertingService = cache.getInternalDistributedSystem().getAlertingService();
-    logger = LogService.getLogger();
-
-    await().until(() -> alertingService.hasAlertListener(managerMember, SEVERE));
-  }
-
-  private void changeAlertLevel(AlertLevel alertLevel) {
-    managerVM.invoke(() -> {
-      distributedSystemMXBean.changeAlertLevel(alertLevel.name());
-    });
-
-    memberVM.invoke(() -> {
-      if (alertLevel == NONE) {
-        await().until(() -> !alertingService.hasAlertListener(managerMember, alertLevel));
-      } else {
-        await().until(() -> alertingService.hasAlertListener(managerMember, alertLevel));
-      }
-    });
-  }
-
-  private Notification captureNotification() {
-    ArgumentCaptor<Notification> notificationCaptor = ArgumentCaptor.forClass(Notification.class);
-    verify(notificationListener, timeout(TIMEOUT)).handleNotification(notificationCaptor.capture(),
-        isNull());
-    return notificationCaptor.getValue();
-  }
-
-  private AlertDetails captureAlertDetails() {
-    ArgumentCaptor<AlertDetails> alertDetailsCaptor = ArgumentCaptor.forClass(AlertDetails.class);
-    verify(messageListener, timeout(TIMEOUT)).created(alertDetailsCaptor.capture());
-    return alertDetailsCaptor.getValue();
-  }
-}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java
deleted file mode 100644
index c2bf009..0000000
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/alerting/AlertingServiceWithoutListenerDistributedTest.java
+++ /dev/null
@@ -1,217 +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.alerting;
-
-import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
-import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.addListener;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.removeListener;
-import static org.apache.geode.internal.alerting.AlertLevel.NONE;
-import static org.apache.geode.internal.alerting.AlertLevel.SEVERE;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedSystemName;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.mbeanServer;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
-import static org.apache.geode.test.dunit.VM.getController;
-import static org.apache.geode.test.dunit.VM.getVM;
-import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import java.io.Serializable;
-import java.util.Properties;
-
-import javax.management.JMX;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.admin.remote.AlertListenerMessage;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.management.DistributedSystemMXBean;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.junit.categories.AlertingTest;
-import org.apache.geode.test.junit.categories.ManagementTest;
-import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
-
-/**
- * Distributed tests for {@link AlertingService} with {@link DistributedSystemMXBean} in the
- * JMX Manager without any {@code NotificationListener}s.
- */
-@Category({AlertingTest.class, ManagementTest.class})
-public class AlertingServiceWithoutListenerDistributedTest implements Serializable {
-
-  private static InternalCache cache;
-  private static Logger logger;
-
-  private static AlertListenerMessage.Listener messageListener;
-  private static DistributedSystemMXBean distributedSystemMXBean;
-  private static AlertingService alertingService;
-
-  private DistributedMember managerMember;
-
-  private String alertMessage;
-
-  private String managerName;
-  private String memberName;
-
-  private VM managerVM;
-  private VM memberVM;
-
-  @Rule
-  public DistributedRule distributedRule = new DistributedRule();
-
-  @Rule
-  public SerializableTestName testName = new SerializableTestName();
-
-  @Before
-  public void setUp() throws Exception {
-    alertMessage = "Alerting in " + testName.getMethodName();
-
-    managerName = "Manager in " + testName.getMethodName();
-    memberName = "Member in " + testName.getMethodName();
-
-    managerVM = getVM(0);
-    memberVM = getController();
-
-    managerMember = managerVM.invoke(() -> createManager());
-    memberVM.invoke(() -> createMember());
-
-    addIgnoredException(alertMessage);
-  }
-
-  @After
-  public void tearDown() {
-    for (VM vm : toArray(managerVM, memberVM)) {
-      vm.invoke(() -> {
-        removeListener(messageListener);
-        cache.close();
-        cache = null;
-        logger = null;
-        messageListener = null;
-        distributedSystemMXBean = null;
-        alertingService = null;
-      });
-    }
-  }
-
-  @Test
-  public void distributedSystemMXBeanExists() {
-    managerVM.invoke(() -> {
-      assertThat(distributedSystemMXBean).isNotNull();
-    });
-  }
-
-  @Test
-  public void distributedSystemMXBeanIsRegistered() {
-    managerVM.invoke(() -> {
-      assertThat(mbeanServer.isRegistered(getDistributedSystemName())).isTrue();
-    });
-  }
-
-  @Test
-  public void alertListenerIsRegisteredForManager() {
-    memberVM.invoke(() -> {
-      assertThat(alertingService.hasAlertListener(managerMember, SEVERE)).isTrue();
-    });
-  }
-
-  @Test
-  public void alertMessageIsReceivedByManager() {
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> verifyNoMoreInteractions(messageListener));
-  }
-
-  @Test
-  public void alertListenerMessageIsNotReceivedByManagerForLevelNone() {
-    changeAlertLevel(NONE);
-
-    memberVM.invoke(() -> logger.fatal(alertMessage));
-
-    managerVM.invoke(() -> verifyNoMoreInteractions(messageListener));
-  }
-
-  @Test
-  public void alertListenerMessageIsNotReceivedByManagerForLevelsLowerThanAlertLevel() {
-    memberVM.invoke(() -> {
-      logger.warn(alertMessage);
-      logger.error(alertMessage);
-    });
-
-    managerVM.invoke(() -> verifyNoMoreInteractions(messageListener));
-  }
-
-  private DistributedMember createManager() {
-    messageListener = spy(AlertListenerMessage.Listener.class);
-    addListener(messageListener);
-
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, managerName);
-    config.setProperty(JMX_MANAGER, "true");
-    config.setProperty(JMX_MANAGER_START, "true");
-    config.setProperty(JMX_MANAGER_PORT, "0");
-    config.setProperty(HTTP_SERVICE_PORT, "0");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    alertingService = cache.getInternalDistributedSystem().getAlertingService();
-    logger = LogService.getLogger();
-
-    distributedSystemMXBean = JMX.newMXBeanProxy(getPlatformMBeanServer(),
-        getDistributedSystemName(), DistributedSystemMXBean.class);
-
-    return cache.getDistributedSystem().getDistributedMember();
-  }
-
-  private void createMember() {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, memberName);
-    config.setProperty(JMX_MANAGER, "false");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    alertingService = cache.getInternalDistributedSystem().getAlertingService();
-    logger = LogService.getLogger();
-
-    await().until(() -> alertingService.hasAlertListener(managerMember, SEVERE));
-  }
-
-  private void changeAlertLevel(AlertLevel alertLevel) {
-    managerVM.invoke(() -> {
-      distributedSystemMXBean.changeAlertLevel(alertLevel.name());
-    });
-
-    memberVM.invoke(() -> {
-      if (alertLevel == NONE) {
-        await().until(() -> !alertingService.hasAlertListener(managerMember, alertLevel));
-      } else {
-        await().until(() -> alertingService.hasAlertListener(managerMember, alertLevel));
-      }
-    });
-  }
-}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/logging/LoggingWithReconnectDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/logging/LoggingWithReconnectDistributedTest.java
deleted file mode 100644
index 4734bba..0000000
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/logging/LoggingWithReconnectDistributedTest.java
+++ /dev/null
@@ -1,210 +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.lang.System.lineSeparator;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.apache.geode.distributed.ConfigurationProperties.DISABLE_AUTO_RECONNECT;
-import static org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.MAX_WAIT_TIME_RECONNECT;
-import static org.apache.geode.distributed.ConfigurationProperties.MEMBER_TIMEOUT;
-import static org.apache.geode.distributed.internal.membership.gms.MembershipManagerHelper.getMembershipManager;
-import static org.apache.geode.internal.Banner.BannerHeader.displayValues;
-import static org.apache.geode.internal.logging.Configuration.STARTUP_CONFIGURATION;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
-import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
-import static org.apache.geode.test.dunit.VM.getController;
-import static org.apache.geode.test.dunit.VM.getVM;
-import static org.apache.geode.test.dunit.VM.toArray;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.File;
-import java.io.Serializable;
-import java.util.Arrays;
-
-import org.apache.commons.lang3.StringUtils;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.ForcedDisconnectException;
-import org.apache.geode.distributed.LocatorLauncher;
-import org.apache.geode.distributed.ServerLauncher;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.junit.categories.LoggingTest;
-import org.apache.geode.test.junit.rules.serializable.SerializableTemporaryFolder;
-import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
-
-/**
- * Distributed tests for logging during reconnect.
- */
-@Category(LoggingTest.class)
-public class LoggingWithReconnectDistributedTest implements Serializable {
-
-  private static final long TIMEOUT = getTimeout().getValueInMS();
-
-  private static LocatorLauncher locatorLauncher;
-  private static ServerLauncher serverLauncher;
-
-  private static InternalDistributedSystem system;
-
-  private VM locatorVM;
-  private VM server1VM;
-  private VM server2VM;
-
-  private String locatorName;
-  private String server1Name;
-  private String server2Name;
-
-  private File locatorDir;
-  private File server1Dir;
-  private File server2Dir;
-
-  @Rule
-  public DistributedRule distributedRule = new DistributedRule();
-
-  @Rule
-  public SerializableTemporaryFolder temporaryFolder = new SerializableTemporaryFolder();
-
-  @Rule
-  public SerializableTestName testName = new SerializableTestName();
-
-  @Before
-  public void setUp() throws Exception {
-    locatorName = "locator-" + testName.getMethodName();
-    server1Name = "server-" + testName.getMethodName() + "-1";
-    server2Name = "server-" + testName.getMethodName() + "-2";
-
-    locatorVM = getVM(0);
-    server1VM = getVM(1);
-    server2VM = getController();
-
-    locatorDir = temporaryFolder.newFolder(locatorName);
-    server1Dir = temporaryFolder.newFolder(server1Name);
-    server2Dir = temporaryFolder.newFolder(server2Name);
-
-    int locatorPort = locatorVM.invoke(() -> createLocator());
-
-    server1VM.invoke(() -> createServer(server1Name, server1Dir, locatorPort));
-    server2VM.invoke(() -> createServer(server2Name, server2Dir, locatorPort));
-
-    addIgnoredException(ForcedDisconnectException.class);
-    addIgnoredException("Possible loss of quorum");
-  }
-
-  @After
-  public void tearDown() {
-    locatorVM.invoke(() -> {
-      locatorLauncher.stop();
-      locatorLauncher = null;
-      system = null;
-    });
-
-    for (VM vm : toArray(server1VM, server2VM)) {
-      vm.invoke(() -> {
-        serverLauncher.stop();
-        serverLauncher = null;
-        system = null;
-      });
-    }
-  }
-
-  @Test
-  public void logFileContainsBannerOnlyOnce() {
-    locatorVM.invoke(() -> {
-      assertThat(system.getDistributionManager().getDistributionManagerIds()).hasSize(3);
-    });
-
-    server2VM.invoke(() -> {
-      GMSMembershipManager membershipManager = (GMSMembershipManager) getMembershipManager(system);
-      membershipManager.forceDisconnect("Forcing disconnect in " + testName.getMethodName());
-
-      await().until(() -> system.isReconnecting());
-      system.waitUntilReconnected(TIMEOUT, MILLISECONDS);
-      assertThat(system.getReconnectedSystem()).isNotSameAs(system);
-    });
-
-    locatorVM.invoke(() -> {
-      assertThat(system.getDistributionManager().getDistributionManagerIds()).hasSize(3);
-    });
-
-    server2VM.invoke(() -> {
-      File[] files = server2Dir.listFiles((dir, name) -> name.endsWith(".log"));
-      assertThat(files).as(expectedOneLogFile(files)).hasSize(1);
-
-      File logFile = files[0];
-      assertThat(logFile).exists();
-
-      // Banner must be logged only once
-      LogFileAssert.assertThat(logFile).containsOnlyOnce(displayValues());
-
-      // Startup Config must be logged only once
-      String[] startupConfiguration = StringUtils
-          .split(STARTUP_CONFIGURATION + system.getConfig().toLoggerString(), lineSeparator());
-
-      LogFileAssert.assertThat(logFile).containsOnlyOnce(startupConfiguration);
-    });
-  }
-
-  private String expectedOneLogFile(File[] files) {
-    return "Expecting directory:" + lineSeparator() + " " + server2Dir.getAbsolutePath()
-        + lineSeparator() + "to contain only one log file:" + lineSeparator() + " " + server2Name
-        + ".log" + lineSeparator() + "but found multiple log files:" + lineSeparator() + " "
-        + Arrays.asList(files);
-  }
-
-  private int createLocator() {
-    LocatorLauncher.Builder builder = new LocatorLauncher.Builder();
-    builder.setMemberName(locatorName);
-    builder.setWorkingDirectory(locatorDir.getAbsolutePath());
-    builder.setPort(0);
-    builder.set(DISABLE_AUTO_RECONNECT, "false");
-    builder.set(ENABLE_CLUSTER_CONFIGURATION, "false");
-    builder.set(MAX_WAIT_TIME_RECONNECT, "1000");
-    builder.set(MEMBER_TIMEOUT, "2000");
-
-    locatorLauncher = builder.build();
-    locatorLauncher.start();
-
-    system = (InternalDistributedSystem) locatorLauncher.getCache().getDistributedSystem();
-
-    return locatorLauncher.getPort();
-  }
-
-  private void createServer(String serverName, File serverDir, int locatorPort) {
-    ServerLauncher.Builder builder = new ServerLauncher.Builder();
-    builder.setMemberName(serverName);
-    builder.setWorkingDirectory(serverDir.getAbsolutePath());
-    builder.setServerPort(0);
-    builder.set(LOCATORS, "localHost[" + locatorPort + "]");
-    builder.set(DISABLE_AUTO_RECONNECT, "false");
-    builder.set(ENABLE_CLUSTER_CONFIGURATION, "false");
-    builder.set(MAX_WAIT_TIME_RECONNECT, "1000");
-    builder.set(MEMBER_TIMEOUT, "2000");
-
-    serverLauncher = builder.build();
-    serverLauncher.start();
-
-    system = (InternalDistributedSystem) serverLauncher.getCache().getDistributedSystem();
-  }
-}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemDUnitTest.java
new file mode 100644
index 0000000..8fae2ea
--- /dev/null
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemDUnitTest.java
@@ -0,0 +1,575 @@
+/*
+ * 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.management;
+
+import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedSystemName;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBeanName;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberNameOrId;
+import static org.apache.geode.test.dunit.Host.getHost;
+import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
+import static org.apache.geode.test.dunit.Invoke.invokeInEveryVM;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.management.ListenerNotFoundException;
+import javax.management.Notification;
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.NotificationFilter;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+
+import org.apache.logging.log4j.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.internal.admin.Alert;
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.internal.logging.log4j.AlertAppender;
+import org.apache.geode.management.internal.AlertDetails;
+import org.apache.geode.management.internal.ManagementConstants;
+import org.apache.geode.management.internal.NotificationHub;
+import org.apache.geode.management.internal.NotificationHub.NotificationHubListener;
+import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.beans.MemberMBean;
+import org.apache.geode.management.internal.beans.SequenceNumber;
+import org.apache.geode.test.awaitility.GeodeAwaitility;
+import org.apache.geode.test.dunit.IgnoredException;
+import org.apache.geode.test.dunit.VM;
+
+/**
+ * DistributedSystemMXBean tests:
+ *
+ * <p>
+ * a) For all the notifications
+ * <ul>
+ * <li>i) gemfire.distributedsystem.member.joined
+ * <li>ii) gemfire.distributedsystem.member.left
+ * <li>iii) gemfire.distributedsystem.member.suspect
+ * <li>iv) All notifications emitted by member mbeans
+ * <li>v) Alerts
+ * </ul>
+ *
+ * <p>
+ * b) Concurrently modify proxy list by removing member and accessing the distributed system MBean
+ *
+ * <p>
+ * c) Aggregate Operations like shutDownAll
+ *
+ * <p>
+ * d) Member level operations like fetchJVMMetrics()
+ *
+ * <p>
+ * e ) Statistics
+ *
+ * <p>
+ * TODO: break up the large tests into smaller tests
+ */
+@SuppressWarnings("serial,unused")
+public class DistributedSystemDUnitTest implements Serializable {
+
+  private static final Logger logger = LogService.getLogger();
+
+  private static final String WARNING_LEVEL_MESSAGE = "Warning Level Alert Message";
+  private static final String SEVERE_LEVEL_MESSAGE = "Severe Level Alert Message";
+
+  private static volatile List<Notification> notifications;
+  private static volatile Map<ObjectName, NotificationListener> notificationListenerMap;
+
+  @Manager
+  private VM managerVM;
+
+  @Member
+  private VM[] memberVMs;
+
+  @Rule
+  public ManagementTestRule managementTestRule = ManagementTestRule.builder().build();
+
+  @Before
+  public void before() throws Exception {
+    notifications = Collections.synchronizedList(new ArrayList<>());
+    notificationListenerMap = Collections.synchronizedMap(new HashMap<>());
+    invokeInEveryVM(() -> notifications = Collections.synchronizedList(new ArrayList<>()));
+    invokeInEveryVM(() -> notificationListenerMap = Collections.synchronizedMap(new HashMap<>()));
+  }
+
+  @After
+  public void after() {
+    resetAlertCounts(managerVM);
+
+    notifications = null;
+    notificationListenerMap = null;
+    invokeInEveryVM(() -> notifications = null);
+    invokeInEveryVM(() -> notificationListenerMap = null);
+  }
+
+  /**
+   * Tests each and every operations that is defined on the MemberMXBean
+   */
+  @Test
+  public void testDistributedSystemAggregate() {
+    managementTestRule.createManager(managerVM);
+    addNotificationListener(managerVM);
+
+    for (VM memberVM : memberVMs) {
+      managementTestRule.createMember(memberVM);
+    }
+
+    verifyDistributedSystemMXBean(managerVM);
+  }
+
+  /**
+   * Tests each and every operations that is defined on the MemberMXBean
+   */
+  @Test
+  public void testAlertManagedNodeFirst() {
+    for (VM memberVM : memberVMs) {
+      managementTestRule.createMember(memberVM);
+      generateWarningAlert(memberVM);
+      generateSevereAlert(memberVM);
+    }
+
+    managementTestRule.createManager(managerVM);
+    addAlertListener(managerVM);
+    verifyAlertCount(managerVM, 0, 0);
+
+    DistributedMember managerDistributedMember =
+        managementTestRule.getDistributedMember(managerVM);
+
+    // Before we start we need to ensure that the initial (implicit) SEVERE alert has propagated
+    // everywhere.
+    for (VM memberVM : memberVMs) {
+      verifyAlertAppender(memberVM, managerDistributedMember, Alert.SEVERE);
+    }
+
+    setAlertLevel(managerVM, AlertDetails.getAlertLevelAsString(Alert.WARNING));
+
+    for (VM memberVM : memberVMs) {
+      verifyAlertAppender(memberVM, managerDistributedMember, Alert.WARNING);
+      generateWarningAlert(memberVM);
+      generateSevereAlert(memberVM);
+    }
+
+    verifyAlertCount(managerVM, 3, 3);
+    resetAlertCounts(managerVM);
+
+    setAlertLevel(managerVM, AlertDetails.getAlertLevelAsString(Alert.SEVERE));
+
+    for (VM memberVM : memberVMs) {
+      verifyAlertAppender(memberVM, managerDistributedMember, Alert.SEVERE);
+      generateWarningAlert(memberVM);
+      generateSevereAlert(memberVM);
+    }
+
+    verifyAlertCount(managerVM, 3, 0);
+  }
+
+  /**
+   * Tests each and every operations that is defined on the MemberMXBean
+   */
+  @Test
+  public void testShutdownAll() {
+    VM memberVM1 = getHost(0).getVM(0);
+    VM memberVM2 = getHost(0).getVM(1);
+    VM memberVM3 = getHost(0).getVM(2);
+
+    VM managerVM = getHost(0).getVM(3);
+
+    // managerVM Node is created first
+    managementTestRule.createManager(managerVM);
+
+    managementTestRule.createMember(memberVM1);
+    managementTestRule.createMember(memberVM2);
+    managementTestRule.createMember(memberVM3);
+
+    shutDownAll(managerVM);
+  }
+
+  @Test
+  public void testNavigationAPIS() {
+    managementTestRule.createManager(managerVM);
+
+    for (VM memberVM : memberVMs) {
+      managementTestRule.createMember(memberVM);
+    }
+
+    verifyFetchMemberObjectName(managerVM, memberVMs.length + 1);
+  }
+
+  @Test
+  public void testNotificationHub() {
+    managementTestRule.createMembers();
+    managementTestRule.createManagers();
+
+    class NotificationHubTestListener implements NotificationListener {
+
+      @Override
+      public synchronized void handleNotification(Notification notification, Object handback) {
+        logger.info("Notification received {}", notification);
+        notifications.add(notification);
+      }
+    }
+
+    managerVM.invoke("addListenerToMemberMXBean", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+
+      GeodeAwaitility.await().untilAsserted(
+          () -> assertThat(distributedSystemMXBean.listMemberObjectNames()).hasSize(5));
+
+      for (ObjectName objectName : distributedSystemMXBean.listMemberObjectNames()) {
+        NotificationHubTestListener listener = new NotificationHubTestListener();
+        getPlatformMBeanServer().addNotificationListener(objectName, listener, null, null);
+        notificationListenerMap.put(objectName, listener);
+      }
+    });
+
+    // Check in all VMS
+
+    for (VM memberVM : memberVMs) {
+      memberVM.invoke("checkNotificationHubListenerCount", () -> {
+        SystemManagementService service = managementTestRule.getSystemManagementService();
+        NotificationHub notificationHub = service.getNotificationHub();
+        Map<ObjectName, NotificationHubListener> listenerMap =
+            notificationHub.getListenerObjectMap();
+        assertThat(listenerMap.keySet()).hasSize(1);
+
+        ObjectName memberMBeanName =
+            getMemberMBeanName(managementTestRule.getDistributedMember());
+        NotificationHubListener listener = listenerMap.get(memberMBeanName);
+
+        /*
+         * Counter of listener should be 2 . One for default Listener which is added for each member
+         * mbean by distributed system mbean One for the added listener in test
+         */
+        assertThat(listener.getNumCounter()).isEqualTo(2);
+
+        // Raise some notifications
+
+        NotificationBroadcasterSupport notifier = (MemberMBean) service.getMemberMXBean();
+        String memberSource = getMemberNameOrId(managementTestRule.getDistributedMember());
+
+        // Only a dummy notification , no actual region is created
+        Notification notification = new Notification(JMXNotificationType.REGION_CREATED,
+            memberSource, SequenceNumber.next(), System.currentTimeMillis(),
+            ManagementConstants.REGION_CREATED_PREFIX + "/test");
+        notifier.sendNotification(notification);
+      });
+    }
+
+    managerVM.invoke("checkNotificationsAndRemoveListeners", () -> {
+      GeodeAwaitility.await().untilAsserted(() -> assertThat(notifications).hasSize(3));
+
+      notifications.clear();
+
+      for (ObjectName objectName : notificationListenerMap.keySet()) {
+        NotificationListener listener = notificationListenerMap.get(objectName);
+        getPlatformMBeanServer().removeNotificationListener(objectName, listener);
+      }
+    });
+
+    // Check in all VMS again
+
+    for (VM memberVM : memberVMs) {
+      memberVM.invoke("checkNotificationHubListenerCountAgain", () -> {
+        SystemManagementService service = managementTestRule.getSystemManagementService();
+        NotificationHub hub = service.getNotificationHub();
+        Map<ObjectName, NotificationHubListener> listenerObjectMap = hub.getListenerObjectMap();
+        assertThat(listenerObjectMap.keySet().size()).isEqualTo(1);
+
+        ObjectName memberMBeanName =
+            getMemberMBeanName(managementTestRule.getDistributedMember());
+        NotificationHubListener listener = listenerObjectMap.get(memberMBeanName);
+
+        /*
+         * Counter of listener should be 1 for the default Listener which is added for each member
+         * mbean by distributed system mbean.
+         */
+        assertThat(listener.getNumCounter()).isEqualTo(1);
+      });
+    }
+
+    managerVM.invoke("removeListenerFromMemberMXBean", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+
+      GeodeAwaitility.await().untilAsserted(
+          () -> assertThat(distributedSystemMXBean.listMemberObjectNames()).hasSize(5));
+
+      for (ObjectName objectName : distributedSystemMXBean.listMemberObjectNames()) {
+        NotificationHubTestListener listener = new NotificationHubTestListener();
+        try {
+          getPlatformMBeanServer().removeNotificationListener(objectName, listener); // because new
+                                                                                     // instance!!
+        } catch (ListenerNotFoundException e) {
+          // TODO: [old] apparently there is never a notification listener on any these mbeans at
+          // this point [fix this]
+          // fix this test so it doesn't hit these unexpected exceptions -- getLogWriter().error(e);
+        }
+      }
+    });
+
+    for (VM memberVM : memberVMs) {
+      memberVM.invoke("verifyNotificationHubListenersWereRemoved", () -> {
+        SystemManagementService service = managementTestRule.getSystemManagementService();
+        NotificationHub notificationHub = service.getNotificationHub();
+        notificationHub.cleanUpListeners();
+        assertThat(notificationHub.getListenerObjectMap()).isEmpty();
+
+        for (ObjectName objectName : notificationListenerMap.keySet()) {
+          NotificationListener listener = notificationListenerMap.get(objectName);
+          assertThatThrownBy(
+              () -> getPlatformMBeanServer().removeNotificationListener(objectName, listener))
+                  .isExactlyInstanceOf(ListenerNotFoundException.class);
+        }
+      });
+    }
+  }
+
+  /**
+   * Tests each and every operations that is defined on the MemberMXBean
+   */
+  @Test
+  public void testAlert() {
+    managementTestRule.createManager(managerVM);
+    addAlertListener(managerVM);
+    resetAlertCounts(managerVM);
+
+    DistributedMember managerDistributedMember =
+        managementTestRule.getDistributedMember(managerVM);
+
+    generateWarningAlert(managerVM);
+    generateSevereAlert(managerVM);
+    verifyAlertCount(managerVM, 1, 0);
+    resetAlertCounts(managerVM);
+
+    for (VM memberVM : memberVMs) {
+      managementTestRule.createMember(memberVM);
+
+      verifyAlertAppender(memberVM, managerDistributedMember, Alert.SEVERE);
+
+      generateWarningAlert(memberVM);
+      generateSevereAlert(memberVM);
+    }
+
+    verifyAlertCount(managerVM, 3, 0);
+    resetAlertCounts(managerVM);
+    setAlertLevel(managerVM, AlertDetails.getAlertLevelAsString(Alert.WARNING));
+
+    for (VM memberVM : memberVMs) {
+      verifyAlertAppender(memberVM, managerDistributedMember, Alert.WARNING);
+      generateWarningAlert(memberVM);
+      generateSevereAlert(memberVM);
+    }
+
+    verifyAlertCount(managerVM, 3, 3);
+
+    resetAlertCounts(managerVM);
+
+    setAlertLevel(managerVM, AlertDetails.getAlertLevelAsString(Alert.OFF));
+
+    for (VM memberVM : memberVMs) {
+      verifyAlertAppender(memberVM, managerDistributedMember, Alert.OFF);
+      generateWarningAlert(memberVM);
+      generateSevereAlert(memberVM);
+    }
+
+    verifyAlertCount(managerVM, 0, 0);
+  }
+
+  private void verifyAlertAppender(final VM memberVM, final DistributedMember member,
+      final int alertLevel) {
+    memberVM.invoke("verifyAlertAppender",
+        () -> GeodeAwaitility.await().untilAsserted(
+            () -> assertThat(AlertAppender.getInstance().hasAlertListener(member, alertLevel))
+                .isTrue()));
+  }
+
+  private void verifyAlertCount(final VM managerVM, final int expectedSevereAlertCount,
+      final int expectedWarningAlertCount) {
+    managerVM.invoke("verifyAlertCount", () -> {
+      AlertNotificationListener listener = AlertNotificationListener.getInstance();
+
+      GeodeAwaitility.await().untilAsserted(
+          () -> assertThat(listener.getSevereAlertCount()).isEqualTo(expectedSevereAlertCount));
+      GeodeAwaitility.await().untilAsserted(
+          () -> assertThat(listener.getWarningAlertCount()).isEqualTo(expectedWarningAlertCount));
+    });
+  }
+
+  private void setAlertLevel(final VM managerVM, final String alertLevel) {
+    managerVM.invoke("setAlertLevel", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+      distributedSystemMXBean.changeAlertLevel(alertLevel);
+    });
+  }
+
+  private void generateWarningAlert(final VM anyVM) {
+    anyVM.invoke("generateWarningAlert", () -> {
+      IgnoredException ignoredException = addIgnoredException(WARNING_LEVEL_MESSAGE);
+      logger.warn(WARNING_LEVEL_MESSAGE);
+      ignoredException.remove();
+    });
+  }
+
+  private void resetAlertCounts(final VM managerVM) {
+    managerVM.invoke("resetAlertCounts", () -> {
+      AlertNotificationListener listener = AlertNotificationListener.getInstance();
+      listener.resetCount();
+    });
+  }
+
+  private void generateSevereAlert(final VM anyVM) {
+    anyVM.invoke("generateSevereAlert", () -> {
+      IgnoredException ignoredException = addIgnoredException(SEVERE_LEVEL_MESSAGE);
+      logger.fatal(SEVERE_LEVEL_MESSAGE);
+      ignoredException.remove();
+    });
+  }
+
+  private void addAlertListener(final VM managerVM) {
+    managerVM.invoke("addAlertListener", () -> {
+      AlertNotificationListener listener = AlertNotificationListener.getInstance();
+      listener.resetCount();
+
+      NotificationFilter notificationFilter = (Notification notification) -> notification.getType()
+          .equals(JMXNotificationType.SYSTEM_ALERT);
+
+      getPlatformMBeanServer().addNotificationListener(getDistributedSystemName(), listener,
+          notificationFilter, null);
+    });
+  }
+
+  /**
+   * Check aggregate related functions and attributes
+   */
+  private void verifyDistributedSystemMXBean(final VM managerVM) {
+    managerVM.invoke("verifyDistributedSystemMXBean", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+
+      GeodeAwaitility.await()
+          .untilAsserted(() -> assertThat(distributedSystemMXBean.getMemberCount()).isEqualTo(5));
+
+      Set<DistributedMember> otherMemberSet = managementTestRule.getOtherNormalMembers();
+      for (DistributedMember member : otherMemberSet) {
+        // TODO: create some assertions (this used to just print JVMMetrics and OSMetrics)
+      }
+    });
+  }
+
+  private void addNotificationListener(final VM managerVM) {
+    managerVM.invoke("addNotificationListener", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+      assertThat(distributedSystemMXBean).isNotNull();
+
+      DistributedSystemNotificationListener listener = new DistributedSystemNotificationListener();
+      getPlatformMBeanServer().addNotificationListener(getDistributedSystemName(), listener, null,
+          null);
+    });
+  }
+
+  private void shutDownAll(final VM managerVM) {
+    managerVM.invoke("shutDownAll", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+      distributedSystemMXBean.shutDownAllMembers();
+
+      GeodeAwaitility.await().untilAsserted(
+          () -> assertThat(managementTestRule.getOtherNormalMembers()).hasSize(0));
+    });
+  }
+
+  private void verifyFetchMemberObjectName(final VM managerVM, final int memberCount) {
+    managerVM.invoke("verifyFetchMemberObjectName", () -> {
+      ManagementService service = managementTestRule.getManagementService();
+      DistributedSystemMXBean distributedSystemMXBean = service.getDistributedSystemMXBean();
+
+      GeodeAwaitility.await().untilAsserted(
+          () -> assertThat(distributedSystemMXBean.listMemberObjectNames()).hasSize(memberCount));
+
+      String memberId = managementTestRule.getDistributedMember().getId();
+      ObjectName thisMemberName = getMemberMBeanName(memberId);
+      ObjectName memberName = distributedSystemMXBean.fetchMemberObjectName(memberId);
+      assertThat(memberName).isEqualTo(thisMemberName);
+    });
+  }
+
+  private static class DistributedSystemNotificationListener implements NotificationListener {
+
+    @Override
+    public void handleNotification(final Notification notification, final Object handback) {
+      assertThat(notification).isNotNull();
+    }
+  }
+
+  private static class AlertNotificationListener implements NotificationListener {
+
+    private static AlertNotificationListener listener = new AlertNotificationListener();
+
+    private int warningAlertCount = 0;
+
+    private int severeAlertCount = 0;
+
+    static AlertNotificationListener getInstance() { // TODO: get rid of singleton
+      return listener;
+    }
+
+    @Override
+    public synchronized void handleNotification(final Notification notification,
+        final Object handback) {
+      assertThat(notification).isNotNull();
+
+      Map<String, String> notificationUserData = (Map<String, String>) notification.getUserData();
+
+      if (notificationUserData.get(JMXNotificationUserData.ALERT_LEVEL)
+          .equalsIgnoreCase("warning")) {
+        assertThat(notification.getMessage()).isEqualTo(WARNING_LEVEL_MESSAGE);
+        warningAlertCount++;
+      }
+      if (notificationUserData.get(JMXNotificationUserData.ALERT_LEVEL)
+          .equalsIgnoreCase("severe")) {
+        assertThat(notification.getMessage()).isEqualTo(SEVERE_LEVEL_MESSAGE);
+        severeAlertCount++;
+      }
+    }
+
+    void resetCount() {
+      warningAlertCount = 0;
+      severeAlertCount = 0;
+    }
+
+    int getWarningAlertCount() {
+      return warningAlertCount;
+    }
+
+    int getSevereAlertCount() {
+      return severeAlertCount;
+    }
+  }
+}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java
deleted file mode 100644
index 21d99bf..0000000
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanDistributedTest.java
+++ /dev/null
@@ -1,202 +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.management;
-
-import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBeanName;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.dunit.VM.getVM;
-import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.Serializable;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.management.ObjectName;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.rules.SharedErrorCollector;
-import org.apache.geode.test.junit.categories.ManagementTest;
-
-/**
- * Distributed tests for {@link DistributedSystemMXBean} notifications.
- *
- * <pre>
- * a) Concurrently modify proxy list by removing member and accessing the distributed system MBean
- * b) Aggregate Operations like shutDownAll
- * c) Member level operations like fetchJVMMetrics()
- * d ) Statistics
- * </pre>
- */
-@Category(ManagementTest.class)
-@SuppressWarnings("serial")
-public class DistributedSystemMXBeanDistributedTest implements Serializable {
-
-  private static final String MANAGER_NAME = "managerVM";
-  private static final String MEMBER_NAME = "memberVM-";
-
-  private static InternalCache cache;
-  private static InternalDistributedMember distributedMember;
-  private static SystemManagementService managementService;
-  private static DistributedSystemMXBean distributedSystemMXBean;
-
-  private VM managerVM;
-  private VM memberVM1;
-  private VM memberVM2;
-  private VM memberVM3;
-
-  @Rule
-  public DistributedRule distributedRule = new DistributedRule();
-
-  @Rule
-  public SharedErrorCollector errorCollector = new SharedErrorCollector();
-
-  @Before
-  public void setUp() throws Exception {
-    managerVM = getVM(0);
-    memberVM1 = getVM(1);
-    memberVM2 = getVM(2);
-    memberVM3 = getVM(3);
-
-    managerVM.invoke(() -> createManager());
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> createMember(memberVM.getId()));
-    }
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    for (VM vm : toArray(managerVM, memberVM1, memberVM2, memberVM3)) {
-      vm.invoke(() -> {
-        if (cache != null) {
-          cache.close();
-        }
-        cache = null;
-        distributedMember = null;
-        managementService = null;
-        distributedSystemMXBean = null;
-      });
-    }
-  }
-
-  @Test
-  public void getMemberCount() {
-    // 1 manager, 3 members, 1 dunit locator
-    managerVM.invoke(() -> {
-      await()
-          .untilAsserted(() -> assertThat(distributedSystemMXBean.getMemberCount()).isEqualTo(5));
-    });
-  }
-
-  @Test
-  public void showJVMMetrics() {
-    managerVM.invoke(() -> {
-      await().until(() -> distributedSystemMXBean.getMemberCount() == 5);
-
-      for (DistributedMember member : getOtherNormalMembers()) {
-        assertThat(distributedSystemMXBean.showJVMMetrics(member.getName())).isNotNull();
-      }
-    });
-  }
-
-  @Test
-  public void showOSMetrics() {
-    managerVM.invoke(() -> {
-      await().until(() -> distributedSystemMXBean.getMemberCount() == 5);
-
-      Set<InternalDistributedMember> otherMembers = getOtherNormalMembers();
-      for (DistributedMember member : otherMembers) {
-        assertThat(distributedSystemMXBean.showOSMetrics(member.getName())).isNotNull();
-      }
-    });
-  }
-
-  @Test
-  public void shutDownAllMembers() {
-    managerVM.invoke(() -> {
-      distributedSystemMXBean.shutDownAllMembers();
-
-      await().untilAsserted(() -> assertThat(getOtherNormalMembers()).hasSize(0));
-    });
-  }
-
-  @Test
-  public void listMemberObjectNames() {
-    managerVM.invoke(() -> {
-      await().untilAsserted(
-          () -> assertThat(distributedSystemMXBean.listMemberObjectNames()).hasSize(4));
-    });
-  }
-
-  @Test
-  public void fetchMemberObjectName() {
-    managerVM.invoke(() -> {
-      String memberName = distributedMember.getName();
-
-      await().until(() -> distributedSystemMXBean.fetchMemberObjectName(memberName) != null);
-
-      ObjectName memberMXBeanName = distributedSystemMXBean.fetchMemberObjectName(memberName);
-      assertThat(memberMXBeanName).isEqualTo(getMemberMBeanName(memberName));
-    });
-  }
-
-  private void createManager() {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, MANAGER_NAME);
-    config.setProperty(JMX_MANAGER, "true");
-    config.setProperty(JMX_MANAGER_START, "true");
-    config.setProperty(JMX_MANAGER_PORT, "0");
-    config.setProperty(HTTP_SERVICE_PORT, "0");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    distributedMember = cache.getDistributionManager().getId();
-    managementService = (SystemManagementService) ManagementService.getManagementService(cache);
-
-    distributedSystemMXBean = managementService.getDistributedSystemMXBean();
-  }
-
-  private void createMember(int vmId) {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, MEMBER_NAME + vmId);
-    config.setProperty(JMX_MANAGER, "false");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    distributedMember = cache.getDistributionManager().getId();
-    managementService = (SystemManagementService) ManagementService.getManagementService(cache);
-  }
-
-  private Set<InternalDistributedMember> getOtherNormalMembers() {
-    return cache.getDistributionManager().getOtherNormalDistributionManagerIds();
-  }
-}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java
deleted file mode 100644
index 67478b6..0000000
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithAlertsDistributedTest.java
+++ /dev/null
@@ -1,495 +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.management;
-
-import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
-import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.internal.alerting.AlertLevel.ERROR;
-import static org.apache.geode.internal.alerting.AlertLevel.NONE;
-import static org.apache.geode.internal.alerting.AlertLevel.SEVERE;
-import static org.apache.geode.internal.alerting.AlertLevel.WARNING;
-import static org.apache.geode.management.JMXNotificationType.SYSTEM_ALERT;
-import static org.apache.geode.management.JMXNotificationUserData.ALERT_LEVEL;
-import static org.apache.geode.management.ManagementService.getManagementService;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getDistributedSystemName;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
-import static org.apache.geode.test.dunit.IgnoredException.addIgnoredException;
-import static org.apache.geode.test.dunit.VM.getVM;
-import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Properties;
-
-import javax.management.InstanceNotFoundException;
-import javax.management.Notification;
-import javax.management.NotificationFilter;
-import javax.management.NotificationListener;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.mockito.ArgumentCaptor;
-
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.internal.alerting.AlertLevel;
-import org.apache.geode.internal.alerting.AlertingService;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.rules.SharedErrorCollector;
-import org.apache.geode.test.junit.categories.AlertingTest;
-import org.apache.geode.test.junit.categories.ManagementTest;
-import org.apache.geode.test.junit.rules.serializable.SerializableTestName;
-
-/**
- * Distributed tests for {@link DistributedSystemMXBean} with alerts. Extracted from
- * {@link DistributedSystemMXBeanDistributedTest}.
- */
-@Category({ManagementTest.class, AlertingTest.class})
-@SuppressWarnings("serial")
-public class DistributedSystemMXBeanWithAlertsDistributedTest implements Serializable {
-
-  private static final Logger logger = LogService.getLogger();
-
-  private static final String MANAGER_NAME = "managerVM";
-  private static final String MEMBER_NAME = "memberVM-";
-  private static final long TIMEOUT = getTimeout().getValueInMS();
-  private static final NotificationFilter SYSTEM_ALERT_FILTER =
-      notification -> notification.getType().equals(SYSTEM_ALERT);
-
-  private static InternalCache cache;
-  private static AlertingService alertingService;
-  private static NotificationListener notificationListener;
-  private static DistributedSystemMXBean distributedSystemMXBean;
-
-  private DistributedMember managerMember;
-
-  private String warningLevelMessage;
-  private String errorLevelMessage;
-  private String severeLevelMessage;
-
-  private Alert warningAlert;
-  private Alert errorAlert;
-  private Alert severeAlert;
-
-  private VM managerVM;
-  private VM memberVM1;
-  private VM memberVM2;
-  private VM memberVM3;
-
-  @Rule
-  public DistributedRule distributedRule = new DistributedRule();
-
-  @Rule
-  public SerializableTestName testName = new SerializableTestName();
-
-  @Rule
-  public SharedErrorCollector errorCollector = new SharedErrorCollector();
-
-  @Before
-  public void setUp() throws Exception {
-    warningLevelMessage = WARNING.name() + " level alert in " + testName.getMethodName();
-    errorLevelMessage = ERROR.name() + " level alert in " + testName.getMethodName();
-    severeLevelMessage = SEVERE.name() + " level alert in " + testName.getMethodName();
-
-    warningAlert = new Alert(WARNING, warningLevelMessage);
-    errorAlert = new Alert(ERROR, errorLevelMessage);
-    severeAlert = new Alert(SEVERE, severeLevelMessage);
-
-    managerVM = getVM(0);
-    memberVM1 = getVM(1);
-    memberVM2 = getVM(2);
-    memberVM3 = getVM(3);
-
-    managerMember = managerVM.invoke(() -> createManager());
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        createMember(memberVM);
-      });
-    }
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    for (VM vm : toArray(managerVM, memberVM1, memberVM2, memberVM3)) {
-      vm.invoke(() -> {
-        if (cache != null) {
-          cache.close();
-        }
-        cache = null;
-        alertingService = null;
-        notificationListener = null;
-        distributedSystemMXBean = null;
-      });
-    }
-  }
-
-  @Test
-  public void managerAddsAlertListenerToEachMember() {
-    // default AlertLevel is SEVERE
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        await().untilAsserted(
-            () -> assertThat(alertingService.hasAlertListener(managerMember, SEVERE)).isTrue());
-      });
-    }
-  }
-
-  @Test
-  public void managerReceivesRemoteAlertAtAlertLevel() {
-    memberVM1.invoke(() -> {
-      try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-        logger.fatal(severeLevelMessage);
-      }
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlert()).isEqualTo(severeAlert);
-    });
-  }
-
-  @Test
-  public void managerDoesNotReceiveRemoteAlertBelowAlertLevel() {
-    memberVM1.invoke(() -> {
-      try (IgnoredException ie = addIgnoredException(warningLevelMessage)) {
-        logger.warn(warningLevelMessage);
-      }
-      try (IgnoredException ie = addIgnoredException(errorLevelMessage)) {
-        logger.error(errorLevelMessage);
-      }
-    });
-
-    managerVM.invoke(() -> {
-      verifyZeroInteractions(notificationListener);
-    });
-  }
-
-  @Test
-  public void managerReceivesRemoteAlertAboveAlertLevel() {
-    changeAlertLevel(WARNING);
-
-    memberVM1.invoke(() -> {
-      try (IgnoredException ie = addIgnoredException(errorLevelMessage)) {
-        logger.error(errorLevelMessage);
-      }
-      try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-        logger.fatal(severeLevelMessage);
-      }
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAllAlerts(2)).contains(errorAlert, severeAlert);
-    });
-  }
-
-  @Test
-  public void managerReceivesLocalAlertAtAlertLevel() {
-    managerVM.invoke(() -> {
-      try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-        logger.fatal(severeLevelMessage);
-      }
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAlert()).isEqualTo(severeAlert);
-    });
-  }
-
-  @Test
-  public void managerDoesNotReceiveLocalAlertBelowAlertLevel() {
-    managerVM.invoke(() -> {
-      try (IgnoredException ie = addIgnoredException(warningLevelMessage)) {
-        logger.warn(warningLevelMessage);
-      }
-      try (IgnoredException ie = addIgnoredException(errorLevelMessage)) {
-        logger.error(errorLevelMessage);
-      }
-    });
-
-    managerVM.invoke(() -> {
-      verifyZeroInteractions(notificationListener);
-    });
-  }
-
-  /**
-   * Fails due to GEODE-5923: JMX manager only receives local Alerts at the default AlertLevel
-   *
-   * <p>
-   * The JMX manager's local AlertListener for itself remains stuck at {@code SEVERE} even after
-   * invoking {@link DistributedSystemMXBean#changeAlertLevel(String)}.
-   */
-  @Test
-  @Ignore("GEODE-5923")
-  public void managerReceivesLocalAlertAboveAlertLevel() {
-    changeAlertLevel(WARNING);
-
-    managerVM.invoke(() -> {
-      try (IgnoredException ie = addIgnoredException(errorLevelMessage)) {
-        logger.error(errorLevelMessage);
-      }
-      try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-        logger.fatal(severeLevelMessage);
-      }
-    });
-
-    managerVM.invoke(() -> {
-      assertThat(captureAllAlerts(2)).contains(errorAlert, severeAlert);
-    });
-  }
-
-  @Test
-  public void managerReceivesAlertsFromAllMembers() {
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-          logger.fatal(severeLevelMessage);
-        }
-      });
-    }
-
-    managerVM.invoke(() -> {
-      assertThat(captureAllAlerts(3)).contains(severeAlert, severeAlert, severeAlert);
-    });
-  }
-
-  @Test
-  public void managerReceivesAlertsFromAllMembersAtAlertLevelAndAbove() {
-    changeAlertLevel(WARNING);
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        try (IgnoredException ie = addIgnoredException(warningLevelMessage)) {
-          logger.warn(warningLevelMessage);
-        }
-        try (IgnoredException ie = addIgnoredException(errorLevelMessage)) {
-          logger.error(errorLevelMessage);
-        }
-        try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-          logger.fatal(severeLevelMessage);
-        }
-      });
-    }
-
-    managerVM.invoke(() -> {
-      assertThat(captureAllAlerts(9)).contains(warningAlert, warningAlert, warningAlert, errorAlert,
-          errorAlert, errorAlert, severeAlert, severeAlert, severeAlert);
-    });
-  }
-
-  @Test
-  public void managerDoesNotReceiveAlertsAtAlertLevelNone() {
-    changeAlertLevel(NONE);
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        try (IgnoredException ie = addIgnoredException(warningLevelMessage)) {
-          logger.warn(warningLevelMessage);
-        }
-        try (IgnoredException ie = addIgnoredException(errorLevelMessage)) {
-          logger.error(errorLevelMessage);
-        }
-        try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-          logger.fatal(severeLevelMessage);
-        }
-      });
-    }
-
-    managerVM.invoke(() -> {
-      verifyZeroInteractions(notificationListener);
-    });
-  }
-
-  @Test
-  public void managerMissesAnyAlertsBeforeItStarts() {
-    // close managerVM so we can recreate it AFTER generating alerts in memberVMs
-    managerVM.invoke(() -> cache.close());
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-          logger.fatal(severeLevelMessage);
-        }
-      });
-    }
-
-    managerVM.invoke(() -> createManager());
-
-    managerMember = managerVM.invoke(() -> cache.getDistributionManager().getId());
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        await().until(() -> alertingService.hasAlertListener(managerMember, SEVERE));
-      });
-    }
-
-    // managerVM should have missed the alerts from BEFORE it started
-
-    managerVM.invoke(() -> {
-      verifyZeroInteractions(notificationListener);
-    });
-
-    // managerVM should now receive any new alerts though
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        try (IgnoredException ie = addIgnoredException(severeLevelMessage)) {
-          logger.fatal(severeLevelMessage);
-        }
-      });
-    }
-
-    managerVM.invoke(() -> {
-      assertThat(captureAllAlerts(3)).contains(severeAlert, severeAlert, severeAlert);
-    });
-  }
-
-  private DistributedMember createManager() throws InstanceNotFoundException {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, MANAGER_NAME);
-    config.setProperty(JMX_MANAGER, "true");
-    config.setProperty(JMX_MANAGER_START, "true");
-    config.setProperty(JMX_MANAGER_PORT, "0");
-    config.setProperty(HTTP_SERVICE_PORT, "0");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    alertingService = cache.getInternalDistributedSystem().getAlertingService();
-
-    notificationListener = spy(NotificationListener.class);
-    getPlatformMBeanServer().addNotificationListener(getDistributedSystemName(),
-        notificationListener, SYSTEM_ALERT_FILTER, null);
-
-    distributedSystemMXBean = getManagementService(cache).getDistributedSystemMXBean();
-
-    return cache.getDistributionManager().getId();
-  }
-
-  private void createMember(VM memberVM) {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, MEMBER_NAME + memberVM.getId());
-    config.setProperty(JMX_MANAGER, "false");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    alertingService = cache.getInternalDistributedSystem().getAlertingService();
-
-    await().until(() -> alertingService.hasAlertListener(managerMember, SEVERE));
-  }
-
-  private void changeAlertLevel(AlertLevel alertLevel) {
-    managerVM.invoke(() -> {
-      distributedSystemMXBean.changeAlertLevel(alertLevel.name());
-    });
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        if (alertLevel == NONE) {
-          await().until(() -> !alertingService.hasAlertListener(managerMember, alertLevel));
-        } else {
-          await().until(() -> alertingService.hasAlertListener(managerMember, alertLevel));
-        }
-      });
-    }
-  }
-
-  private Notification captureNotification() {
-    ArgumentCaptor<Notification> captor = ArgumentCaptor.forClass(Notification.class);
-    verify(notificationListener, timeout(TIMEOUT)).handleNotification(captor.capture(), isNull());
-    return captor.getValue();
-  }
-
-  private List<Notification> captureAllNotifications(int count) {
-    ArgumentCaptor<Notification> captor = ArgumentCaptor.forClass(Notification.class);
-    verify(notificationListener, timeout(TIMEOUT).times(count)).handleNotification(captor.capture(),
-        isNull());
-    return captor.getAllValues();
-  }
-
-  private Alert captureAlert() {
-    Notification notification = captureNotification();
-    return new Alert(getAlertLevel(notification), notification.getMessage());
-  }
-
-  private List<Alert> captureAllAlerts(int count) {
-    List<Alert> alerts = new ArrayList<>();
-    for (Notification notification : captureAllNotifications(count)) {
-      alerts.add(new Alert(getAlertLevel(notification), notification.getMessage()));
-    }
-    return alerts;
-  }
-
-  private static AlertLevel getAlertLevel(Notification notification) {
-    return AlertLevel.valueOf(getUserData(notification).get(ALERT_LEVEL).toUpperCase());
-  }
-
-  private static Map<String, String> getUserData(Notification notification) {
-    return (Map<String, String>) notification.getUserData();
-  }
-
-  /**
-   * Simple struct with {@link AlertLevel} and {@code String} message with {@code equals}
-   * implemented to compare both fields.
-   */
-  private static class Alert implements Serializable {
-
-    private final AlertLevel level;
-    private final String message;
-
-    Alert(AlertLevel level, String message) {
-      this.level = level;
-      this.message = message;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-      if (this == obj) {
-        return true;
-      }
-      if (obj == null || getClass() != obj.getClass()) {
-        return false;
-      }
-      Alert alert = (Alert) obj;
-      return level == alert.level && Objects.equals(message, alert.message);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(level, message);
-    }
-  }
-}
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
deleted file mode 100644
index b7a581a..0000000
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
+++ /dev/null
@@ -1,243 +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.management;
-
-import static java.lang.management.ManagementFactory.getPlatformMBeanServer;
-import static org.apache.geode.distributed.ConfigurationProperties.HTTP_SERVICE_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_PORT;
-import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_START;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.management.JMXNotificationType.REGION_CREATED;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBeanName;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberNameOrId;
-import static org.apache.geode.management.internal.ManagementConstants.REGION_CREATED_PREFIX;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
-import static org.apache.geode.test.dunit.VM.getVM;
-import static org.apache.geode.test.dunit.VM.toArray;
-import static org.apache.geode.test.dunit.standalone.DUnitLauncher.getDistributedSystemProperties;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-
-import java.io.Serializable;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.management.Notification;
-import javax.management.NotificationBroadcasterSupport;
-import javax.management.NotificationListener;
-import javax.management.ObjectName;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.internal.NotificationHub;
-import org.apache.geode.management.internal.NotificationHub.NotificationHubListener;
-import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.management.internal.beans.MemberMBean;
-import org.apache.geode.management.internal.beans.SequenceNumber;
-import org.apache.geode.test.dunit.VM;
-import org.apache.geode.test.dunit.rules.DistributedRule;
-import org.apache.geode.test.dunit.rules.SharedErrorCollector;
-import org.apache.geode.test.junit.categories.ManagementTest;
-
-/**
- * Distributed tests for {@link DistributedSystemMXBean} notifications. Extracted from
- * {@link DistributedSystemMXBeanDistributedTest}.
- *
- * <p>
- * TODO: test all notifications emitted by DistributedSystemMXBean:
- *
- * <pre>
- * a) gemfire.distributedsystem.member.joined
- * b) gemfire.distributedsystem.member.left
- * c) gemfire.distributedsystem.member.suspect
- * d) All notifications emitted by MemberMXBeans
- * </pre>
- */
-@Category(ManagementTest.class)
-@SuppressWarnings("serial")
-public class DistributedSystemMXBeanWithNotificationsDistributedTest implements Serializable {
-
-  private static final long TIMEOUT = getTimeout().getValueInMS();
-  private static final String MANAGER_NAME = "managerVM";
-  private static final String MEMBER_NAME = "memberVM-";
-
-  /** One NotificationListener is added for the DistributedSystemMXBean in Manager VM. */
-  private static final int ONE_LISTENER_FOR_MANAGER = 1;
-
-  /** One NotificationListener is added for spying by the test. */
-  private static final int ONE_LISTENER_FOR_SPYING = 1;
-
-  /** Three Member VMs, one Manager VM and one DUnit Locator VM. */
-  private static final int CLUSTER_SIZE = 5;
-
-  /** Three Member VMs. */
-  private static final int THREE_MEMBERS = 3;
-
-  private static InternalCache cache;
-  private static InternalDistributedMember distributedMember;
-  private static SystemManagementService managementService;
-  private static NotificationListener notificationListener;
-  private static DistributedSystemMXBean distributedSystemMXBean;
-
-  private VM managerVM;
-  private VM memberVM1;
-  private VM memberVM2;
-  private VM memberVM3;
-
-  @Rule
-  public DistributedRule distributedRule = new DistributedRule();
-
-  @Rule
-  public SharedErrorCollector errorCollector = new SharedErrorCollector();
-
-  @Before
-  public void setUp() throws Exception {
-    managerVM = getVM(0);
-    memberVM1 = getVM(1);
-    memberVM2 = getVM(2);
-    memberVM3 = getVM(3);
-
-    managerVM.invoke(() -> createManager());
-
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> createMember(memberVM.getId()));
-    }
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    for (VM vm : toArray(managerVM, memberVM1, memberVM2, memberVM3)) {
-      vm.invoke(() -> {
-        if (cache != null) {
-          cache.close();
-        }
-        cache = null;
-        distributedMember = null;
-        managementService = null;
-        distributedSystemMXBean = null;
-      });
-    }
-  }
-
-  @Test
-  public void testNotificationHub() {
-    // add spy notificationListener to each MemberMXBean in cluster
-    managerVM.invoke(() -> {
-      // wait until Manager VM has MemberMXBean for each node in cluster
-      await().untilAsserted(
-          () -> assertThat(distributedSystemMXBean.listMemberObjectNames()).hasSize(CLUSTER_SIZE));
-
-      for (ObjectName objectName : distributedSystemMXBean.listMemberObjectNames()) {
-        getPlatformMBeanServer().addNotificationListener(objectName, notificationListener, null,
-            null);
-      }
-    });
-
-    // verify each Member VM has one spy listener in addition to one for DistributedSystemMXBean
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        Map<ObjectName, NotificationHubListener> listenerObjectMap =
-            managementService.getNotificationHub().getListenerObjectMap();
-        NotificationHubListener hubListener =
-            listenerObjectMap.get(getMemberMBeanName(distributedMember));
-
-        assertThat(hubListener.getNumCounter())
-            .isEqualTo(ONE_LISTENER_FOR_SPYING + ONE_LISTENER_FOR_MANAGER);
-      });
-    }
-
-    // send a dummy notification from each Member VM (no actual region is created)
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        Notification notification =
-            new Notification(REGION_CREATED, getMemberNameOrId(distributedMember),
-                SequenceNumber.next(), System.currentTimeMillis(), REGION_CREATED_PREFIX + "/test");
-        NotificationBroadcasterSupport notifier = (MemberMBean) managementService.getMemberMXBean();
-        notifier.sendNotification(notification);
-      });
-    }
-
-    // remove spy notificationListener from each MemberMXBean in cluster
-    managerVM.invoke(() -> {
-      verify(notificationListener, timeout(TIMEOUT).times(THREE_MEMBERS))
-          .handleNotification(isA(Notification.class), isNull());
-
-      for (ObjectName objectName : distributedSystemMXBean.listMemberObjectNames()) {
-        getPlatformMBeanServer().removeNotificationListener(objectName, notificationListener);
-      }
-    });
-
-    // verify each Member VM has just one listener for DistributedSystemMXBean
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        Map<ObjectName, NotificationHubListener> listenerObjectMap =
-            managementService.getNotificationHub().getListenerObjectMap();
-        NotificationHubListener hubListener =
-            listenerObjectMap.get(getMemberMBeanName(distributedMember));
-
-        assertThat(hubListener.getNumCounter()).isEqualTo(ONE_LISTENER_FOR_MANAGER);
-      });
-    }
-
-    // verify NotificationHub#cleanUpListeners() behavior in each Member VM
-    for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
-      memberVM.invoke(() -> {
-        NotificationHub notificationHub = managementService.getNotificationHub();
-        notificationHub.cleanUpListeners();
-
-        assertThat(notificationHub.getListenerObjectMap()).isEmpty();
-      });
-    }
-  }
-
-  private void createManager() {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, MANAGER_NAME);
-    config.setProperty(JMX_MANAGER, "true");
-    config.setProperty(JMX_MANAGER_START, "true");
-    config.setProperty(JMX_MANAGER_PORT, "0");
-    config.setProperty(HTTP_SERVICE_PORT, "0");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    distributedMember = cache.getDistributionManager().getId();
-    managementService = (SystemManagementService) ManagementService.getManagementService(cache);
-    notificationListener = spy(NotificationListener.class);
-
-    distributedSystemMXBean = managementService.getDistributedSystemMXBean();
-  }
-
-  private void createMember(int vmId) {
-    Properties config = getDistributedSystemProperties();
-    config.setProperty(NAME, MEMBER_NAME + vmId);
-    config.setProperty(JMX_MANAGER, "false");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    distributedMember = cache.getDistributionManager().getId();
-    managementService = (SystemManagementService) ManagementService.getManagementService(cache);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/admin/jmx/internal/DeprecatedAgentLauncherIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/admin/jmx/internal/DeprecatedAgentLauncherIntegrationTest.java
index b7c80dc..3d144a7 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/admin/jmx/internal/DeprecatedAgentLauncherIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/admin/jmx/internal/DeprecatedAgentLauncherIntegrationTest.java
@@ -14,7 +14,6 @@
  */
 package org.apache.geode.admin.jmx.internal;
 
-import static java.lang.System.lineSeparator;
 import static org.apache.geode.admin.jmx.AgentConfig.DEFAULT_PROPERTY_FILE;
 import static org.apache.geode.admin.jmx.internal.AgentConfigImpl.AGENT_PROPSFILE_PROPERTY_NAME;
 import static org.apache.geode.admin.jmx.internal.AgentLauncher.AGENT_PROPS;
@@ -24,13 +23,11 @@ import static org.apache.geode.admin.jmx.internal.AgentLauncher.RUNNING;
 import static org.apache.geode.admin.jmx.internal.AgentLauncher.SHUTDOWN;
 import static org.apache.geode.admin.jmx.internal.AgentLauncher.STARTING;
 import static org.apache.geode.admin.jmx.internal.AgentLauncher.VMARGS;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assume.assumeFalse;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -48,8 +45,6 @@ import org.apache.geode.test.process.ProcessWrapper;
 
 public class DeprecatedAgentLauncherIntegrationTest {
 
-  private static final long TIMEOUT = getTimeout().getValueInMS();
-
   private String classpath;
 
   @Rule
@@ -299,11 +294,7 @@ public class DeprecatedAgentLauncherIntegrationTest {
     if (processOutputPattern != null) {
       agentProcess.waitForOutputToMatch(processOutputPattern);
     }
-    assertThat(agentProcess.waitFor(TIMEOUT)).as("Expecting process started with:" + lineSeparator()
-        + " " + Arrays.asList(args) + lineSeparator() + "with output:" + lineSeparator() + " "
-        + agentProcess.getOutput(true) + lineSeparator() + "to terminate with exit code: 0"
-        + lineSeparator() + "but waitFor is still waiting after timeout: " + TIMEOUT + " seconds.")
-        .isEqualTo(0);
+    agentProcess.waitFor();
   }
 
 }
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/SingleHopClientExecutorWithLoggingIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/SingleHopClientExecutorWithLoggingIntegrationTest.java
index d44cc7d..56a1acf 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/SingleHopClientExecutorWithLoggingIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/cache/client/internal/SingleHopClientExecutorWithLoggingIntegrationTest.java
@@ -17,21 +17,14 @@
 package org.apache.geode.cache.client.internal;
 
 import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
-import static org.apache.geode.test.util.ResourceUtils.getResource;
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.net.URL;
-
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.contrib.java.lang.system.SystemErrRule;
 import org.junit.contrib.java.lang.system.SystemOutRule;
 import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
 
 import org.apache.geode.test.junit.categories.ClientServerTest;
 import org.apache.geode.test.junit.categories.LoggingTest;
@@ -43,34 +36,18 @@ import org.apache.geode.test.junit.categories.LoggingTest;
 @Category({ClientServerTest.class, LoggingTest.class})
 public class SingleHopClientExecutorWithLoggingIntegrationTest {
 
-  private static String configFilePath;
-
-  @ClassRule
-  public static SystemOutRule systemOutRule = new SystemOutRule().enableLog();
-
-  @ClassRule
-  public static SystemErrRule systemErrRule = new SystemErrRule().enableLog();
-
-  @ClassRule
-  public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
   @Rule
-  public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
+  public SystemErrRule systemErrRule = new SystemErrRule().enableLog();
 
-  @BeforeClass
-  public static void setUpLogConfigFile() throws Exception {
-    String configFileName =
-        SingleHopClientExecutorWithLoggingIntegrationTest.class.getSimpleName() + "_log4j2.xml";
-    URL resource = getResource(configFileName);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), configFileName)
-        .getAbsolutePath();
-  }
+  @Rule
+  public SystemOutRule systemOutRule = new SystemOutRule().enableLog();
 
   /**
    * Refer: GEODE-2109 This test verifies that any exception thrown from forked thread is logged
    * into log.
    */
   @Test
+  @Ignore("Until GEODE-5637 is fixed")
   public void submittedTaskShouldLogFailure() {
     String message = "I am expecting this to be logged";
 
@@ -82,6 +59,7 @@ public class SingleHopClientExecutorWithLoggingIntegrationTest {
     /*
      * Sometimes need to wait for more than sec as thread execution takes time.
      */
-    await().untilAsserted(() -> assertThat(systemOutRule.getLog()).contains(message));
+    await()
+        .untilAsserted(() -> assertThat(systemErrRule.getLog()).contains(message));
   }
 }
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherIntegrationTestCase.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherIntegrationTestCase.java
index 1e484dc..61c7313 100755
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherIntegrationTestCase.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherIntegrationTestCase.java
@@ -93,7 +93,7 @@ public abstract class LocatorLauncherIntegrationTestCase extends LauncherIntegra
     return givenLocatorLauncher(newBuilder());
   }
 
-  protected LocatorLauncher givenLocatorLauncher(final Builder builder) {
+  private LocatorLauncher givenLocatorLauncher(final Builder builder) {
     return builder.build();
   }
 
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/InternalLocatorIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/InternalLocatorIntegrationTest.java
new file mode 100644
index 0000000..9d0917b
--- /dev/null
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/InternalLocatorIntegrationTest.java
@@ -0,0 +1,76 @@
+/*
+ * 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.distributed.internal;
+
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.NAME;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Properties;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.logging.log4j.LogWriterAppender;
+import org.apache.geode.internal.logging.log4j.LogWriterAppenders;
+
+public class InternalLocatorIntegrationTest {
+
+  private Locator locator;
+  private LogWriterAppender appender;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Test
+  public void testLogWriterAppenderShouldBeRemovedForALocatorWithNoDS() throws Exception {
+    Properties properties = new Properties();
+    properties.setProperty(NAME, "testVM");
+    properties.setProperty(LOG_FILE, temporaryFolder.newFile("testVM.log").getAbsolutePath());
+
+    int port = AvailablePortHelper.getRandomAvailableTCPPort();
+    locator = InternalLocator.startLocator(port, null, null, null, null, false, properties, null);
+
+    appender = LogWriterAppenders.getAppender(LogWriterAppenders.Identifier.MAIN);
+    assertThat(appender).isNotNull();
+
+    locator.stop();
+
+    appender = LogWriterAppenders.getAppender(LogWriterAppenders.Identifier.MAIN);
+    assertThat(appender).isNull();
+  }
+
+  @Test
+  public void testLogWriterAppenderShouldBeRemovedForALocatorWithDS() throws Exception {
+    Properties properties = new Properties();
+    properties.setProperty(NAME, "testVM");
+    properties.setProperty(LOG_FILE, temporaryFolder.newFile("testVM.log").getAbsolutePath());
+
+    int port = AvailablePortHelper.getRandomAvailableTCPPort();
+    locator = InternalLocator.startLocatorAndDS(port, null, properties);
+
+    appender = LogWriterAppenders.getAppender(LogWriterAppenders.Identifier.MAIN);
+    assertThat(appender).isNotNull();
+
+    locator.stop();
+
+    appender = LogWriterAppenders.getAppender(LogWriterAppenders.Identifier.MAIN);
+    assertThat(appender).isNull();
+  }
+}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
index cfbaacc..35df7d9 100755
--- a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
@@ -101,8 +101,8 @@ import org.apache.geode.internal.DataSerializableFixedID;
 import org.apache.geode.internal.HeapDataOutputStream;
 import org.apache.geode.internal.Version;
 import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
-import org.apache.geode.internal.alerting.AlertingAction;
 import org.apache.geode.internal.cache.DistributedCacheOperation;
+import org.apache.geode.internal.logging.log4j.AlertAppender;
 import org.apache.geode.test.junit.categories.MembershipTest;
 
 @Category({MembershipTest.class})
@@ -243,11 +243,14 @@ public class JGroupsMessengerJUnitTest {
     messenger.setMessageFlags(dmsg, jgmsg);
     assertFalse("expected no_fc to not be set in " + jgmsg.getFlags(),
         jgmsg.isFlagSet(Message.Flag.NO_FC));
-    AlertingAction.execute(() -> {
+    AlertAppender.setIsAlerting(true);
+    try {
       messenger.setMessageFlags(dmsg, jgmsg);
       assertTrue("expected no_fc to be set in " + jgmsg.getFlags(),
           jgmsg.isFlagSet(Message.Flag.NO_FC));
-    });
+    } finally {
+      AlertAppender.setIsAlerting(false);
+    }
   }
 
   @Test
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertListenerRegistrationIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertListenerRegistrationIntegrationTest.java
deleted file mode 100644
index 196d9ca..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertListenerRegistrationIntegrationTest.java
+++ /dev/null
@@ -1,183 +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.alerting;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.internal.alerting.AlertLevel.ERROR;
-import static org.apache.geode.internal.alerting.AlertLevel.NONE;
-import static org.apache.geode.internal.alerting.AlertLevel.SEVERE;
-import static org.apache.geode.internal.alerting.AlertLevel.WARNING;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Properties;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.logging.log4j.AlertAppender;
-import org.apache.geode.test.junit.categories.AlertingTest;
-
-/**
- * Integration tests for adding and removing {@code Alert} listeners.
- */
-@Category(AlertingTest.class)
-public class AlertListenerRegistrationIntegrationTest {
-
-  private InternalDistributedSystem system;
-  private DistributedMember member;
-  private AlertingService alertingService;
-
-  @Before
-  public void setUp() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-    member = system.getDistributedMember();
-    alertingService = system.getAlertingService();
-  }
-
-  @After
-  public void tearDown() {
-    system.disconnect();
-  }
-
-  @Test
-  public void alertingProviderIsAlertAppender() {
-    assertThat(alertingService.getAlertingProviderRegistry().getAlertingProvider())
-        .isInstanceOf(AlertAppender.class);
-  }
-
-  @Test
-  public void hasAlertListenerIsFalseByDefault() {
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      assertThat(alertingService.hasAlertListener(member, alertLevel)).isFalse();
-    }
-  }
-
-  @Test
-  public void hasAlertListenerIsTrueAfterAdding() {
-    alertingService.addAlertListener(member, WARNING);
-
-    assertThat(alertingService.hasAlertListener(member, WARNING)).isTrue();
-  }
-
-  @Test
-  public void hasAlertListenerIsTrueOnlyForLevelWarning() {
-    alertingService.addAlertListener(member, WARNING);
-
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      if (alertLevel != WARNING) {
-        assertThat(alertingService.hasAlertListener(member, alertLevel)).isFalse();
-      }
-    }
-  }
-
-  @Test
-  public void hasAlertListenerIsTrueOnlyForLevelError() {
-    alertingService.addAlertListener(member, ERROR);
-
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      if (alertLevel != ERROR) {
-        assertThat(alertingService.hasAlertListener(member, alertLevel)).isFalse();
-      }
-    }
-  }
-
-  @Test
-  public void hasAlertListenerIsTrueOnlyForLevelSevere() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      if (alertLevel != SEVERE) {
-        assertThat(alertingService.hasAlertListener(member, alertLevel)).isFalse();
-      }
-    }
-  }
-
-  @Test
-  public void addAlertListenerDoesNothingForLevelNone() {
-    alertingService.addAlertListener(member, NONE);
-
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      assertThat(alertingService.hasAlertListener(member, alertLevel)).isFalse();
-    }
-  }
-
-  @Test
-  public void removeAlertListenerReturnsFalseByDefault() {
-    assertThat(alertingService.removeAlertListener(member)).isFalse();
-  }
-
-  @Test
-  public void removeAlertListenerReturnsFalseAfterAddingForLevelNone() {
-    alertingService.addAlertListener(member, NONE);
-
-    assertThat(alertingService.removeAlertListener(member)).isFalse();
-  }
-
-  @Test
-  public void removeAlertListenerReturnsTrueAfterAdding() {
-    alertingService.addAlertListener(member, WARNING);
-
-    assertThat(alertingService.removeAlertListener(member)).isTrue();
-  }
-
-  @Test
-  public void hasAlertListenerIsFalseAfterRemoving() {
-    alertingService.addAlertListener(member, WARNING);
-    alertingService.removeAlertListener(member);
-
-    assertThat(alertingService.hasAlertListener(member, WARNING)).isFalse();
-  }
-
-  @Test
-  public void systemHasAlertListenerForMemberIsFalseByDefault() {
-    assertThat(system.hasAlertListenerFor(member)).isFalse();
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      assertThat(system.hasAlertListenerFor(member, alertLevel.intLevel())).isFalse();
-    }
-  }
-
-  @Test
-  public void systemHasAlertListenerForAlertLevelIsFalseByDefault() {
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      assertThat(system.hasAlertListenerFor(member, alertLevel.intLevel())).isFalse();
-    }
-  }
-
-  @Test
-  public void systemHasAlertListenerIsTrueAfterAdding() {
-    alertingService.addAlertListener(member, WARNING);
-
-    assertThat(system.hasAlertListenerFor(member, WARNING.intLevel())).isTrue();
-  }
-
-  @Test
-  public void systemHasAlertListenerIsFalseForOtherLevels() {
-    alertingService.addAlertListener(member, WARNING);
-
-    for (AlertLevel alertLevel : AlertLevel.values()) {
-      if (alertLevel != WARNING) {
-        assertThat(system.hasAlertListenerFor(member, alertLevel.intLevel())).isFalse();
-      }
-    }
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertingServiceWithClusterIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertingServiceWithClusterIntegrationTest.java
deleted file mode 100644
index 58b2b6a..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertingServiceWithClusterIntegrationTest.java
+++ /dev/null
@@ -1,274 +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.alerting;
-
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.distributed.ConfigurationProperties.START_LOCATOR;
-import static org.apache.geode.internal.AvailablePortHelper.getRandomAvailableTCPPort;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.addListener;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.removeListener;
-import static org.apache.geode.internal.alerting.AlertLevel.ERROR;
-import static org.apache.geode.internal.alerting.AlertLevel.NONE;
-import static org.apache.geode.internal.alerting.AlertLevel.SEVERE;
-import static org.apache.geode.internal.alerting.AlertLevel.WARNING;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
-import static org.apache.geode.test.dunit.NetworkUtils.getServerHostName;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import java.util.Properties;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
-import org.mockito.ArgumentCaptor;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.admin.remote.AlertListenerMessage;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.management.internal.AlertDetails;
-import org.apache.geode.test.junit.categories.AlertingTest;
-
-/**
- * Integration tests for {@link AlertingService} in a cluster member.
- */
-@Category(AlertingTest.class)
-public class AlertingServiceWithClusterIntegrationTest {
-
-  private static final long TIMEOUT = getTimeout().getValueInMS();
-
-  private InternalDistributedSystem system;
-  private DistributedMember member;
-  private AlertListenerMessage.Listener messageListener;
-  private Logger logger;
-  private String connectionName;
-  private String alertMessage;
-  private String exceptionMessage;
-  private String threadName;
-  private long threadId;
-
-  private AlertingService alertingService;
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() {
-    alertMessage = "Alerting in " + testName.getMethodName();
-    exceptionMessage = "Exception in " + testName.getMethodName();
-    connectionName = "Member in " + testName.getMethodName();
-    threadName = Thread.currentThread().getName();
-    threadId = Thread.currentThread().getId();
-
-    messageListener = spy(AlertListenerMessage.Listener.class);
-    addListener(messageListener);
-
-    String startLocator = getServerHostName() + "[" + getRandomAvailableTCPPort() + "]";
-
-    Properties config = new Properties();
-    config.setProperty(START_LOCATOR, startLocator);
-    config.setProperty(NAME, connectionName);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-    member = system.getDistributedMember();
-    logger = LogService.getLogger();
-
-    alertingService = system.getAlertingService();
-  }
-
-  @After
-  public void tearDown() {
-    removeListener(messageListener);
-    system.disconnect();
-  }
-
-  @Test
-  public void alertMessageIsNotReceivedWithoutListener() {
-    logger.fatal(alertMessage);
-
-    verifyNoMoreInteractions(messageListener);
-  }
-
-  @Test
-  public void alertMessageIsReceivedForListenerLevelWarning() {
-    alertingService.addAlertListener(member, WARNING);
-
-    logger.warn(alertMessage);
-
-    verify(messageListener, timeout(TIMEOUT)).received(isA(AlertListenerMessage.class));
-  }
-
-  @Test
-  public void alertMessageIsReceivedForListenerLevelError() {
-    alertingService.addAlertListener(member, ERROR);
-
-    logger.error(alertMessage);
-
-    verify(messageListener, timeout(TIMEOUT)).received(isA(AlertListenerMessage.class));
-  }
-
-  @Test
-  public void alertMessageIsReceivedForListenerLevelFatal() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    verify(messageListener, timeout(TIMEOUT)).received(isA(AlertListenerMessage.class));
-  }
-
-  @Test
-  public void alertMessageIsNotReceivedForLevelNone() {
-    alertingService.addAlertListener(member, NONE);
-
-    logger.fatal(alertMessage);
-
-    verifyNoMoreInteractions(messageListener);
-  }
-
-  @Test
-  public void alertMessageIsReceivedForHigherLevels() {
-    alertingService.addAlertListener(member, WARNING);
-
-    logger.error(alertMessage);
-    logger.fatal(alertMessage);
-
-    verify(messageListener, timeout(TIMEOUT).times(2)).received(isA(AlertListenerMessage.class));
-  }
-
-  @Test
-  public void alertMessageIsNotReceivedForLowerLevels() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.warn(alertMessage);
-    logger.error(alertMessage);
-
-    verifyNoMoreInteractions(messageListener);
-  }
-
-  @Test
-  public void alertDetailsIsCreatedByAlertMessage() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails()).isNotNull().isInstanceOf(AlertDetails.class);
-  }
-
-  @Test
-  public void alertDetailsAlertLevelMatches() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getAlertLevel()).isEqualTo(SEVERE.intLevel());
-  }
-
-  @Test
-  public void alertDetailsMessageMatches() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getMsg()).isEqualTo(alertMessage);
-  }
-
-  @Test
-  public void alertDetailsSenderIsNullForLocalAlert() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getSender()).isNull();
-  }
-
-  @Test
-  public void alertDetailsSource() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getSource()).contains(threadName);
-  }
-
-  @Test
-  public void alertDetailsConnectionName() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getConnectionName()).isEqualTo(connectionName);
-  }
-
-  @Test
-  public void alertDetailsExceptionTextIsEmpty() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getExceptionText()).isEqualTo("");
-  }
-
-  @Test
-  public void alertDetailsExceptionTextMatches() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage, new Exception(exceptionMessage));
-
-    assertThat(captureAlertDetails().getExceptionText()).contains(exceptionMessage);
-  }
-
-  @Test
-  public void alertDetailsThreadName() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getThreadName()).isEqualTo(threadName);
-  }
-
-  @Test
-  public void alertDetailsThreadId() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getTid()).isEqualTo(threadId);
-  }
-
-  @Test
-  public void alertDetailsMessageTime() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    assertThat(captureAlertDetails().getMsgTime()).isNotNull();
-  }
-
-  private AlertDetails captureAlertDetails() {
-    ArgumentCaptor<AlertDetails> alertDetailsCaptor = ArgumentCaptor.forClass(AlertDetails.class);
-    verify(messageListener, timeout(TIMEOUT)).created(alertDetailsCaptor.capture());
-    return alertDetailsCaptor.getValue();
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertingServiceWithLonerIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertingServiceWithLonerIntegrationTest.java
deleted file mode 100644
index 1b8e8f5..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/alerting/AlertingServiceWithLonerIntegrationTest.java
+++ /dev/null
@@ -1,89 +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.alerting;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.addListener;
-import static org.apache.geode.internal.admin.remote.AlertListenerMessage.removeListener;
-import static org.apache.geode.internal.alerting.AlertLevel.SEVERE;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-
-import java.util.Properties;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.admin.remote.AlertListenerMessage;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.junit.categories.AlertingTest;
-
-/**
- * Integration tests for {@link AlertingService} in a loner member.
- */
-@Category(AlertingTest.class)
-public class AlertingServiceWithLonerIntegrationTest {
-
-  private InternalDistributedSystem system;
-  private DistributedMember member;
-  private AlertListenerMessage.Listener messageListener;
-  private Logger logger;
-  private String alertMessage;
-
-  private AlertingService alertingService;
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() {
-    alertMessage = "Alerting in " + testName.getMethodName();
-
-    messageListener = spy(AlertListenerMessage.Listener.class);
-    addListener(messageListener);
-
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-    member = system.getDistributedMember();
-    logger = LogService.getLogger();
-
-    alertingService = system.getAlertingService();
-  }
-
-  @After
-  public void tearDown() {
-    removeListener(messageListener);
-    system.disconnect();
-  }
-
-  @Test
-  public void alertMessageIsNotReceived() {
-    alertingService.addAlertListener(member, SEVERE);
-
-    logger.fatal(alertMessage);
-
-    verifyNoMoreInteractions(messageListener);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/BannerLoggingIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/BannerLoggingIntegrationTest.java
deleted file mode 100644
index 04a8c72..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/BannerLoggingIntegrationTest.java
+++ /dev/null
@@ -1,129 +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.nio.charset.Charset.defaultCharset;
-import static org.apache.commons.io.FileUtils.readLines;
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.internal.Banner.BannerHeader.displayValues;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.File;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.Banner;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for logging of the {@link Banner}.
- */
-@Category(LoggingTest.class)
-public class BannerLoggingIntegrationTest {
-
-  private File mainLogFile;
-  private InternalDistributedSystem system;
-  private Logger geodeLogger;
-  private String logMessage;
-
-  @Rule
-  public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() {
-    String name = testName.getMethodName();
-    mainLogFile = new File(temporaryFolder.getRoot(), name + "-main.log");
-
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFile.getAbsolutePath());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    geodeLogger = LogService.getLogger();
-    logMessage = "Logging in " + testName.getMethodName();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    if (system != null) {
-      system.disconnect();
-    }
-  }
-
-  @Test
-  public void bannerIsLoggedToFile() {
-    LogFileAssert.assertThat(mainLogFile).contains(displayValues());
-  }
-
-  @Test
-  public void bannerIsLoggedToFileOnlyOnce() {
-    LogFileAssert.assertThat(mainLogFile).containsOnlyOnce(displayValues());
-  }
-
-  /**
-   * Verifies that the banner is logged before any log messages.
-   */
-  @Test
-  public void bannerIsLoggedToFileBeforeLogMessage() throws Exception {
-    geodeLogger.info(logMessage);
-
-    List<String> lines = readLines(mainLogFile, defaultCharset());
-
-    boolean foundBanner = false;
-    boolean foundLogMessage = false;
-
-    for (String line : lines) {
-      if (containsAny(line, displayValues())) {
-        assertThat(foundLogMessage).as("Banner should be logged before log message: " + lines)
-            .isFalse();
-        foundBanner = true;
-      }
-      if (line.contains(logMessage)) {
-        assertThat(foundBanner).as("Log message should be logged after banner: " + lines)
-            .isTrue();
-        foundLogMessage = true;
-      }
-    }
-
-    assertThat(foundBanner).as("Banner not found in: " + lines).isTrue();
-    assertThat(foundLogMessage).as("Log message not found in: " + lines).isTrue();
-  }
-
-  private boolean containsAny(String string, String... values) {
-    for (String value : values) {
-      if (string.contains(value)) {
-        return true;
-      }
-    }
-    return false;
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogRollingWithDistributedSystemIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/CacheLogRollingIntegrationTest.java
similarity index 91%
rename from geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogRollingWithDistributedSystemIntegrationTest.java
rename to geode-core/src/integrationTest/java/org/apache/geode/internal/logging/CacheLogRollingIntegrationTest.java
index 90c77e9..5b2b77f 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogRollingWithDistributedSystemIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/CacheLogRollingIntegrationTest.java
@@ -42,12 +42,12 @@ import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
- * Integration tests for log rolling with {@link DistributedSystem} lifecycle.
+ * Integration tests for log rolling with cache lifecycle.
  *
  * @since GemFire 6.5
  */
 @Category(LoggingTest.class)
-public class LogRollingWithDistributedSystemIntegrationTest {
+public class CacheLogRollingIntegrationTest {
 
   private static final int MAX_LOG_STATEMENTS = 100000;
   private static final String SECURITY_PREFIX = "security_";
@@ -84,9 +84,9 @@ public class LogRollingWithDistributedSystemIntegrationTest {
   @Test
   public void testSimpleStartRestartWithRolling() {
     Properties config = createConfig();
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(LOG_FILE_SIZE_LIMIT, "1");
-    config.setProperty(LOG_DISK_SPACE_LIMIT, "200");
+    config.put(LOG_FILE, logFile.getAbsolutePath());
+    config.put(LOG_FILE_SIZE_LIMIT, "1");
+    config.put(LOG_DISK_SPACE_LIMIT, "200");
 
     system = DistributedSystem.connect(config);
     system.disconnect();
@@ -98,8 +98,7 @@ public class LogRollingWithDistributedSystemIntegrationTest {
       File newRolledLogFile = childFile(mainInt - 1, 1);
 
       assertThat(newMetaFile).doesNotExist();
-      assertThat(newRolledLogFile).as("mainInt=" + mainInt + ", newMetaFile=" + newMetaFile
-          + ", newRolledLogFile=" + newRolledLogFile).doesNotExist();
+      assertThat(newRolledLogFile).doesNotExist();
 
       system = DistributedSystem.connect(config);
 
@@ -113,8 +112,8 @@ public class LogRollingWithDistributedSystemIntegrationTest {
   @Test
   public void testStartWithRollingThenRestartWithRolling() throws Exception {
     Properties config = createConfig();
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(LOG_FILE_SIZE_LIMIT, "1");
+    config.put(LOG_FILE, logFile.getAbsolutePath());
+    config.put(LOG_FILE_SIZE_LIMIT, "1");
 
     system = DistributedSystem.connect(config);
 
@@ -140,8 +139,8 @@ public class LogRollingWithDistributedSystemIntegrationTest {
   @Test
   public void testLogFileLayoutAndRolling() throws Exception {
     Properties config = createConfig();
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(LOG_FILE_SIZE_LIMIT, "1");
+    config.put(LOG_FILE, logFile.getAbsolutePath());
+    config.put(LOG_FILE_SIZE_LIMIT, "1");
 
     system = DistributedSystem.connect(config);
 
@@ -151,9 +150,9 @@ public class LogRollingWithDistributedSystemIntegrationTest {
   @Test
   public void testSecurityLogFileLayoutAndRolling() throws Exception {
     Properties config = createConfig();
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(LOG_FILE_SIZE_LIMIT, "1");
-    config.setProperty(SECURITY_LOG_FILE, securityLogFile.getAbsolutePath());
+    config.put(LOG_FILE, logFile.getAbsolutePath());
+    config.put(LOG_FILE_SIZE_LIMIT, "1");
+    config.put(SECURITY_LOG_FILE, securityLogFile.getAbsolutePath());
 
     system = DistributedSystem.connect(config);
 
@@ -163,8 +162,8 @@ public class LogRollingWithDistributedSystemIntegrationTest {
   @Test
   public void with_logFileSizeLimit_should_createMetaLogFile() {
     Properties config = createConfig();
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(LOG_FILE_SIZE_LIMIT, "1");
+    config.put(LOG_FILE, logFile.getAbsolutePath());
+    config.put(LOG_FILE_SIZE_LIMIT, "1");
 
     system = DistributedSystem.connect(config);
 
@@ -179,7 +178,7 @@ public class LogRollingWithDistributedSystemIntegrationTest {
   @Test
   public void without_logFileSizeLimit_shouldNot_createMetaLogFile() {
     Properties config = createConfig();
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
+    config.put(LOG_FILE, logFile.getAbsolutePath());
 
     system = DistributedSystem.connect(config);
 
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ConfigurationInfoIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ConfigurationInfoIntegrationTest.java
deleted file mode 100644
index 3b69302..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ConfigurationInfoIntegrationTest.java
+++ /dev/null
@@ -1,42 +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 org.apache.geode.internal.logging.ConfigurationInfo.getConfigurationInfo;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.internal.logging.log4j.Log4jAgent;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for {@link ConfigurationInfo}.
- */
-@Category(LoggingTest.class)
-public class ConfigurationInfoIntegrationTest {
-
-  @Test
-  public void getConfigurationInfoContainsLog4j2Xml() {
-    assertThat(getConfigurationInfo()).contains("log4j2.xml");
-  }
-
-  @Test
-  public void getConfigurationInfoMatchesLog4jAgent() {
-
-    assertThat(getConfigurationInfo()).contains(Log4jAgent.getConfigurationInfo());
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ConfigurationIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ConfigurationIntegrationTest.java
deleted file mode 100644
index d8bc236..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ConfigurationIntegrationTest.java
+++ /dev/null
@@ -1,133 +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 org.apache.geode.internal.logging.Configuration.LogLevelUpdateOccurs.ALWAYS;
-import static org.apache.geode.internal.logging.Configuration.LogLevelUpdateScope.ALL_LOGGERS;
-import static org.apache.geode.internal.logging.Configuration.LogLevelUpdateScope.GEODE_AND_APPLICATION_LOGGERS;
-import static org.apache.geode.internal.logging.Configuration.LogLevelUpdateScope.GEODE_AND_SECURITY_LOGGERS;
-import static org.apache.geode.internal.logging.Configuration.LogLevelUpdateScope.GEODE_LOGGERS;
-import static org.apache.geode.internal.logging.Configuration.MAIN_LOGGER_NAME;
-import static org.apache.geode.internal.logging.Configuration.SECURITY_LOGGER_NAME;
-import static org.apache.geode.internal.logging.LogWriterLevel.INFO;
-import static org.apache.geode.internal.logging.LogWriterLevel.WARNING;
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.getLoggerConfig;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.internal.logging.log4j.Log4jAgent;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for {@link Configuration}.
- */
-@Category(LoggingTest.class)
-public class ConfigurationIntegrationTest {
-
-  private static final String APPLICATION_LOGGER_NAME = "com.application";
-
-  private LogConfigSupplier logConfigSupplier;
-  private LogConfig logConfig;
-
-  private Logger geodeLogger;
-  private Logger geodeSecurityLogger;
-  private Logger applicationLogger;
-
-  @Before
-  public void setUp() {
-    logConfigSupplier = mock(LogConfigSupplier.class);
-    logConfig = mock(LogConfig.class);
-
-    when(logConfigSupplier.getLogConfig()).thenReturn(logConfig);
-    when(logConfig.getLogLevel()).thenReturn(INFO.intLevel());
-    when(logConfig.getSecurityLogLevel()).thenReturn(INFO.intLevel());
-
-    geodeLogger = LogManager.getLogger(MAIN_LOGGER_NAME);
-    geodeSecurityLogger = LogManager.getLogger(SECURITY_LOGGER_NAME);
-    applicationLogger = LogManager.getLogger(APPLICATION_LOGGER_NAME);
-
-    List<LoggerConfig> loggerConfigs = Arrays.asList(getLoggerConfig(geodeLogger),
-        getLoggerConfig(geodeSecurityLogger), getLoggerConfig(applicationLogger));
-
-    Log4jAgent.updateLogLevel(Level.INFO, loggerConfigs.toArray(new LoggerConfig[0]));
-  }
-
-  @Test
-  public void loggerLogLevelIsInfo() {
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.INFO);
-    assertThat(geodeSecurityLogger.getLevel()).isEqualTo(Level.INFO);
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-  }
-
-  @Test
-  public void updatesLogLevelForScopeGeodeLoggers() {
-    when(logConfig.getLogLevel()).thenReturn(WARNING.intLevel());
-
-    Configuration configuration = Configuration.create(ALWAYS, GEODE_LOGGERS);
-    configuration.initialize(logConfigSupplier);
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.WARN);
-    assertThat(geodeSecurityLogger.getLevel()).isEqualTo(Level.INFO);
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-  }
-
-  @Test
-  public void updatesLogLevelForScopeGeodeAndSecurityLoggers() {
-    when(logConfig.getLogLevel()).thenReturn(WARNING.intLevel());
-
-    Configuration configuration = Configuration.create(ALWAYS, GEODE_AND_SECURITY_LOGGERS);
-    configuration.initialize(logConfigSupplier);
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.WARN);
-    assertThat(geodeSecurityLogger.getLevel()).isEqualTo(Level.WARN);
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-  }
-
-  @Test
-  public void updatesLogLevelForScopeAllLoggers() {
-    when(logConfig.getLogLevel()).thenReturn(WARNING.intLevel());
-
-    Configuration configuration = Configuration.create(ALWAYS, ALL_LOGGERS);
-    configuration.initialize(logConfigSupplier);
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.WARN);
-    assertThat(geodeSecurityLogger.getLevel()).isEqualTo(Level.WARN);
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.WARN);
-  }
-
-  @Test
-  public void updatesLogLevelForScopeGeodeAndApplicationLoggers() {
-    when(logConfig.getLogLevel()).thenReturn(WARNING.intLevel());
-
-    Configuration configuration = Configuration.create(ALWAYS, GEODE_AND_APPLICATION_LOGGERS);
-    configuration.initialize(logConfigSupplier);
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.WARN);
-    assertThat(geodeSecurityLogger.getLevel()).isEqualTo(Level.INFO);
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.WARN);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/DistributedSystemLogFileIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/DistributedSystemLogFileIntegrationTest.java
new file mode 100755
index 0000000..dba2b0b
--- /dev/null
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/DistributedSystemLogFileIntegrationTest.java
@@ -0,0 +1,1152 @@
+/*
+ * 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 org.apache.commons.lang3.SystemUtils.LINE_SEPARATOR;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_FILE;
+import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_LEVEL;
+import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.List;
+import java.util.Properties;
+import java.util.Scanner;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+import org.junit.rules.TestName;
+
+import org.apache.geode.LogWriter;
+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.log4j.FastLogger;
+import org.apache.geode.internal.logging.log4j.LogWriterLogger;
+import org.apache.geode.test.junit.categories.LoggingTest;
+
+/**
+ * Connects DistributedSystem and tests logging behavior at a high level.
+ */
+@Category(LoggingTest.class)
+public class DistributedSystemLogFileIntegrationTest {
+
+  private static final AtomicInteger COUNTER = new AtomicInteger();
+
+  private File logFile;
+  private String logFileName;
+  private File securityLogFile;
+  private String securityLogFileName;
+
+  private InternalDistributedSystem system;
+
+  private String prefix;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Rule
+  public TestName testName = new TestName();
+
+  @Before
+  public void setUp() {
+    logFile = new File(temporaryFolder.getRoot(),
+        testName.getMethodName() + "-system-" + System.currentTimeMillis() + ".log");
+    logFileName = logFile.getAbsolutePath();
+
+    securityLogFile = new File(temporaryFolder.getRoot(),
+        "security-" + testName.getMethodName() + "-system-" + System.currentTimeMillis() + ".log");
+    securityLogFileName = securityLogFile.getAbsolutePath();
+
+    prefix = "ExpectedStrings: " + testName.getMethodName() + " message logged at ";
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    if (system != null) {
+      system.disconnect();
+    }
+    // We will want to remove this at some point but right now the log context
+    // does not clear out the security logconfig between tests
+    LoggerContext context = (LoggerContext) LogManager.getContext(false);
+    context.stop();
+  }
+
+  @Test
+  public void testDistributedSystemLogWritersWithFilesDetails() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(SECURITY_LOG_FILE, securityLogFileName);
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> {
+      assertThat(logFile).exists();
+      assertThat(securityLogFile).exists();
+    });
+
+    // assertThat logFile is not empty
+    try (FileInputStream fis = new FileInputStream(logFile)) {
+      assertThat(fis.available()).isGreaterThan(0);
+    }
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel())
+        .isEqualTo(LogWriterLevel.CONFIG.getLogWriterLevel());
+    assertThat(distributionConfig.getSecurityLogLevel())
+        .isEqualTo(LogWriterLevel.CONFIG.getLogWriterLevel());
+
+    assertThat(distributionConfig.getLogFile().getAbsolutePath()).isEqualTo(logFileName);
+    assertThat(distributionConfig.getSecurityLogFile().getAbsolutePath())
+        .isEqualTo(securityLogFileName);
+
+    assertThat(system.getLogWriter()).isInstanceOf(LogWriterLogger.class);
+    assertThat(system.getSecurityLogWriter()).isInstanceOf(LogWriterLogger.class);
+
+    LogWriterLogger logWriterLogger = (LogWriterLogger) system.getLogWriter();
+    LogWriterLogger securityLogWriterLogger = (LogWriterLogger) system.getSecurityLogWriter();
+
+    assertThat(logWriterLogger.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(securityLogWriterLogger.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+
+    securityLogWriterLogger.info("test: security log file created at info");
+
+    // assertThat securityLogFile is not empty
+    try (FileInputStream fis = new FileInputStream(securityLogFile)) {
+      assertThat(fis.available()).isGreaterThan(0);
+    }
+
+    LogWriter logWriter = logWriterLogger;
+    assertThat(logWriter.finestEnabled()).isFalse();
+    assertThat(logWriter.finerEnabled()).isFalse();
+    assertThat(logWriter.fineEnabled()).isFalse();
+    assertThat(logWriter.configEnabled()).isTrue();
+    assertThat(logWriter.infoEnabled()).isTrue();
+    assertThat(logWriter.warningEnabled()).isTrue();
+    assertThat(logWriter.errorEnabled()).isTrue();
+    assertThat(logWriter.severeEnabled()).isTrue();
+
+    FastLogger logWriterFastLogger = logWriterLogger;
+    // assertThat(logWriterFastLogger.isDelegating()).isTrue();
+    assertThat(logWriterFastLogger.isTraceEnabled()).isFalse();
+    assertThat(logWriterFastLogger.isDebugEnabled()).isFalse();
+    assertThat(logWriterFastLogger.isInfoEnabled()).isTrue();
+    assertThat(logWriterFastLogger.isWarnEnabled()).isTrue();
+    assertThat(logWriterFastLogger.isErrorEnabled()).isTrue();
+    assertThat(logWriterFastLogger.isFatalEnabled()).isTrue();
+
+    LogWriter securityLogWriter = securityLogWriterLogger;
+    assertThat(securityLogWriter.finestEnabled()).isFalse();
+    assertThat(securityLogWriter.finerEnabled()).isFalse();
+    assertThat(securityLogWriter.fineEnabled()).isFalse();
+    assertThat(securityLogWriter.configEnabled()).isTrue();
+    assertThat(securityLogWriter.infoEnabled()).isTrue();
+    assertThat(securityLogWriter.warningEnabled()).isTrue();
+    assertThat(securityLogWriter.errorEnabled()).isTrue();
+    assertThat(securityLogWriter.severeEnabled()).isTrue();
+
+    FastLogger securityLogWriterFastLogger = logWriterLogger;
+    // assertThat(securityLogWriterFastLogger.isDelegating()).isFalse();
+    assertThat(securityLogWriterFastLogger.isTraceEnabled()).isFalse();
+    assertThat(securityLogWriterFastLogger.isDebugEnabled()).isFalse();
+    assertThat(securityLogWriterFastLogger.isInfoEnabled()).isTrue();
+    assertThat(securityLogWriterFastLogger.isWarnEnabled()).isTrue();
+    assertThat(securityLogWriterFastLogger.isErrorEnabled()).isTrue();
+    assertThat(securityLogWriterFastLogger.isFatalEnabled()).isTrue();
+  }
+
+  @Test
+  public void testDistributedSystemCreatesLogFile() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(LOG_LEVEL, "config");
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> assertThat(logFile).exists());
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+    Logger applicationLogger = LogManager.getLogger("net.customer");
+
+    // -------------------------------------------------------------------------------------------
+    // CONFIG level
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel())
+        .isEqualTo(LogWriterLevel.CONFIG.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.INFO);
+    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    applicationLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    applicationLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    applicationLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    applicationLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    applicationLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    applicationLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    // -------------------------------------------------------------------------------------------
+    // FINE level
+
+    distributionConfig.setLogLevel(LogWriterLevel.FINE.getLogWriterLevel());
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
+    assertThat(applicationLogger.getLevel()).isEqualTo(Level.DEBUG);
+
+    message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    applicationLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    applicationLogger.debug(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.INFO);
+    applicationLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    applicationLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    applicationLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    applicationLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    // -------------------------------------------------------------------------------------------
+    // ERROR level
+
+    distributionConfig.setLogLevel(LogWriterLevel.ERROR.getLogWriterLevel());
+
+    assertThat(distributionConfig.getLogLevel())
+        .isEqualTo(LogWriterLevel.ERROR.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.ERROR.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.ERROR);
+    assertThat(applicationLogger.getLevel()).isEqualTo(Level.ERROR);
+
+    message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    applicationLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    applicationLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    applicationLogger.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.WARN);
+    applicationLogger.warn(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    applicationLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    applicationLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+  }
+
+  @Test
+  public void testDistributedSystemWithFineLogLevel() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(LOG_LEVEL, "fine");
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> assertThat(logFile).exists());
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    // -------------------------------------------------------------------------------------------
+    // FINE level
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    // -------------------------------------------------------------------------------------------
+    // ERROR level
+
+    distributionConfig.setLogLevel(LogWriterLevel.ERROR.getLogWriterLevel());
+
+    assertThat(distributionConfig.getLogLevel())
+        .isEqualTo(LogWriterLevel.ERROR.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.ERROR.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.ERROR);
+
+    message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+  }
+
+  @Test
+  public void testDistributedSystemWithDebugLogLevel() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(LOG_LEVEL, "debug");
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> assertThat(logFile).exists());
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    // -------------------------------------------------------------------------------------------
+    // DEBUG LEVEL
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+
+    // -------------------------------------------------------------------------------------------
+    // ERROR LEVEL
+
+    distributionConfig.setLogLevel(LogWriterLevel.ERROR.getLogWriterLevel());
+
+    assertThat(distributionConfig.getLogLevel())
+        .isEqualTo(LogWriterLevel.ERROR.getLogWriterLevel());
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.ERROR.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.ERROR);
+
+    message = createMessage(LogWriterLevel.FINEST);
+    logWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    logWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    logWriter.fine(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    logWriter.config(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    logWriter.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    logWriter.warning(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    logWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    logWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+  }
+
+  @Test
+  public void testDistributedSystemWithSecurityLogDefaultLevel() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(LOG_LEVEL, "fine");
+    config.put(SECURITY_LOG_FILE, securityLogFileName);
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> {
+      assertThat(logFile).exists();
+      assertThat(securityLogFile).exists();
+    });
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(distributionConfig.getSecurityLogLevel())
+        .isEqualTo(LogWriterLevel.CONFIG.getLogWriterLevel());
+
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(securityLogWriter.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    securityLogWriter.finest(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    securityLogWriter.fine(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    securityLogWriter.info(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileContains(logFile, message);
+  }
+
+  @Test
+  public void testDistributedSystemWithSecurityLogFineLevel() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(LOG_LEVEL, "fine");
+    config.put(SECURITY_LOG_FILE, securityLogFileName);
+    config.put(SECURITY_LOG_LEVEL, "fine");
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> {
+      assertThat(logFile).exists();
+      assertThat(securityLogFile).exists();
+    });
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(distributionConfig.getSecurityLogLevel())
+        .isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(securityLogWriter.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    securityLogWriter.finest(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    securityLogWriter.finer(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    securityLogWriter.fine(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    securityLogWriter.config(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    securityLogWriter.info(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    securityLogWriter.warning(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    securityLogWriter.error(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    securityLogWriter.severe(message);
+    assertThatFileContains(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileDoesNotContain(securityLogFile, message);
+    assertThatFileContains(logFile, message);
+  }
+
+  /**
+   * tests scenario where security log has not been set but a level has been set to a less granular
+   * level than that of the regular log. Verifies that the correct logs for security show up in the
+   * regular log as expected
+   */
+  @Test
+  public void testDistributedSystemWithSecurityInfoLevelAndLogAtFineLevelButNoSecurityLog()
+      throws Exception {
+    Properties CONFIG = new Properties();
+    CONFIG.put(LOG_FILE, logFileName);
+    CONFIG.put(LOG_LEVEL, "fine");
+    CONFIG.put(SECURITY_LOG_LEVEL, "info");
+    CONFIG.put(MCAST_PORT, "0");
+    CONFIG.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(CONFIG);
+
+    await().untilAsserted(() -> assertThat(logFile).exists());
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(distributionConfig.getSecurityLogLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(securityLogWriter.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    securityLogWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    securityLogWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    securityLogWriter.fine(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    securityLogWriter.config(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    securityLogWriter.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    securityLogWriter.warning(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    securityLogWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    securityLogWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+  }
+
+  /**
+   * tests scenario where security log has not been set but a level has been set to a more granular
+   * level than that of the regular log. Verifies that the correct logs for security show up in the
+   * regular log as expected
+   */
+  @Test
+  public void testDistributedSystemWithSecurityFineLevelAndLogAtInfoLevelButNoSecurityLog()
+      throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_FILE, logFileName);
+    config.put(LOG_LEVEL, "info");
+    config.put(SECURITY_LOG_LEVEL, "fine");
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "");
+
+    system = (InternalDistributedSystem) DistributedSystem.connect(config);
+
+    await().untilAsserted(() -> assertThat(logFile).exists());
+
+    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
+    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
+    Logger geodeLogger = LogService.getLogger();
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel()).isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(distributionConfig.getSecurityLogLevel())
+        .isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+
+    assertThat(logWriter.getLogWriterLevel()).isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(securityLogWriter.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.FINE.getLogWriterLevel());
+    assertThat(geodeLogger.getLevel()).isEqualTo(Level.INFO);
+
+    String message = createMessage(LogWriterLevel.FINEST);
+    securityLogWriter.finest(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINER);
+    securityLogWriter.finer(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(LogWriterLevel.FINE);
+    securityLogWriter.fine(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.CONFIG);
+    securityLogWriter.config(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.INFO);
+    securityLogWriter.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.WARNING);
+    securityLogWriter.warning(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.ERROR);
+    securityLogWriter.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(LogWriterLevel.SEVERE);
+    securityLogWriter.severe(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.TRACE);
+    geodeLogger.trace(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.DEBUG);
+    geodeLogger.debug(message);
+    assertThatFileDoesNotContain(logFile, message);
+
+    message = createMessage(Level.INFO);
+    geodeLogger.info(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.WARN);
+    geodeLogger.warn(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.ERROR);
+    geodeLogger.error(message);
+    assertThatFileContains(logFile, message);
+
+    message = createMessage(Level.FATAL);
+    geodeLogger.fatal(message);
+    assertThatFileContains(logFile, message);
+  }
+
+  private String createMessage(LogWriterLevel logLevel) {
+    return prefix + logLevel.name() + " [" + COUNTER.incrementAndGet() + "]";
+  }
+
+  private String createMessage(Level level) {
+    return prefix + level.name() + " [" + COUNTER.incrementAndGet() + "]";
+  }
+
+  private void assertThatFileContains(final File file, final String string)
+      throws IOException {
+    try (Scanner scanner = new Scanner(file)) {
+      while (scanner.hasNextLine()) {
+        if (scanner.nextLine().trim().contains(string)) {
+          return;
+        }
+      }
+    }
+
+    List<String> lines = Files.readAllLines(file.toPath());
+    fail("Expected file " + file.getAbsolutePath() + " to contain " + string + LINE_SEPARATOR
+        + "Actual: " + lines);
+  }
+
+  private void assertThatFileDoesNotContain(final File file, final String string)
+      throws IOException {
+    boolean fail = false;
+    try (Scanner scanner = new Scanner(file)) {
+      while (scanner.hasNextLine()) {
+        if (scanner.nextLine().trim().contains(string)) {
+          fail = true;
+          break;
+        }
+      }
+    }
+    if (fail) {
+      List<String> lines = Files.readAllLines(file.toPath());
+      fail("Expected file " + file.getAbsolutePath() + " to not contain " + string + LINE_SEPARATOR
+          + "Actual: " + lines);
+    }
+  }
+}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LocatorLogFileIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LocatorLogFileIntegrationTest.java
new file mode 100644
index 0000000..89ac2a0
--- /dev/null
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LocatorLogFileIntegrationTest.java
@@ -0,0 +1,123 @@
+/*
+ * 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 org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
+import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
+import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
+import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
+import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.Properties;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+import org.junit.rules.TestName;
+
+import org.apache.geode.distributed.Locator;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.internal.AvailablePort;
+import org.apache.geode.internal.logging.log4j.LogWriterLogger;
+import org.apache.geode.test.junit.categories.LoggingTest;
+
+/**
+ * Creates Locator and tests logging behavior at a high level.
+ */
+@Category(LoggingTest.class)
+public class LocatorLogFileIntegrationTest {
+
+  private File logFile;
+  private String logFileName;
+  private File securityLogFile;
+
+  private int port;
+  private Locator locator;
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Rule
+  public TestName testName = new TestName();
+
+  @Before
+  public void setUp() {
+    logFile = new File(temporaryFolder.getRoot(),
+        testName.getMethodName() + "-system-" + System.currentTimeMillis() + ".log");
+    logFileName = logFile.getAbsolutePath();
+
+    securityLogFile = new File("");
+
+    port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    if (locator != null) {
+      locator.stop();
+    }
+  }
+
+  @Test
+  public void testLocatorCreatesLogFile() throws Exception {
+    Properties config = new Properties();
+    config.put(LOG_LEVEL, "config");
+    config.put(MCAST_PORT, "0");
+    config.put(LOCATORS, "localhost[" + port + "]");
+    config.put(ENABLE_CLUSTER_CONFIGURATION, "false");
+
+    locator = Locator.startLocatorAndDS(port, logFile, config);
+
+    InternalDistributedSystem system = (InternalDistributedSystem) locator.getDistributedSystem();
+
+    await().untilAsserted(() -> assertThat(logFile).exists());
+
+    // assertThat logFile is not empty
+    try (FileInputStream fis = new FileInputStream(logFile)) {
+      assertThat(fis.available()).isGreaterThan(0);
+    }
+
+    DistributionConfig distributionConfig = system.getConfig();
+
+    assertThat(distributionConfig.getLogLevel())
+        .isEqualTo(LogWriterLevel.CONFIG.getLogWriterLevel());
+    assertThat(distributionConfig.getSecurityLogLevel())
+        .isEqualTo(LogWriterLevel.CONFIG.getLogWriterLevel());
+
+    assertThat(distributionConfig.getLogFile().getAbsolutePath()).isEqualTo(logFileName);
+    assertThat(distributionConfig.getSecurityLogFile().getAbsolutePath())
+        .isEqualTo(securityLogFile.getAbsolutePath());
+
+    assertThat(system.getLogWriter()).isInstanceOf(LogWriterLogger.class);
+    assertThat(system.getSecurityLogWriter()).isInstanceOf(LogWriterLogger.class);
+
+    LogWriterLogger logWriterLogger = (LogWriterLogger) system.getLogWriter();
+    LogWriterLogger securityLogWriterLogger = (LogWriterLogger) system.getSecurityLogWriter();
+
+    assertThat(logWriterLogger.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+    assertThat(securityLogWriterLogger.getLogWriterLevel())
+        .isEqualTo(LogWriterLevel.INFO.getLogWriterLevel());
+
+    assertThat(securityLogFile).doesNotExist();
+  }
+}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogLevelChangesWithCacheIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogLevelChangesWithCacheIntegrationTest.java
deleted file mode 100644
index 81d1b34..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogLevelChangesWithCacheIntegrationTest.java
+++ /dev/null
@@ -1,150 +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 org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
-import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_LEVEL;
-import static org.apache.geode.internal.logging.LogWriterLevel.INFO;
-import static org.apache.geode.internal.logging.LogWriterLevel.WARNING;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Properties;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for log level control using {@link DistributionConfig} with lifecycle of
- * {@link Cache}.
- */
-@Category(LoggingTest.class)
-public class LogLevelChangesWithCacheIntegrationTest {
-
-  private static final String APPLICATION_LOGGER_NAME = "com.application";
-
-  private InternalCache cache;
-  private Logger geodeLogger;
-  private Logger applicationLogger;
-  private InternalLogWriter mainLogWriter;
-  private InternalLogWriter securityLogWriter;
-  private DistributionConfig distributionConfig;
-  private LogConfig logConfig;
-
-  @Before
-  public void setUp() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_LEVEL, "INFO");
-    config.setProperty(SECURITY_LOG_LEVEL, "INFO");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-    InternalDistributedSystem system = cache.getInternalDistributedSystem();
-
-    distributionConfig = system.getConfig();
-    logConfig = system.getLogConfig();
-
-    mainLogWriter = (InternalLogWriter) cache.getLogger();
-    securityLogWriter = (InternalLogWriter) cache.getSecurityLogger();
-
-    geodeLogger = LogService.getLogger();
-    applicationLogger = LogManager.getLogger(APPLICATION_LOGGER_NAME);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    if (cache != null) {
-      cache.close();
-    }
-  }
-
-  @Test
-  public void mainLogWriterLogLevelIsInfo() {
-    assertThat(mainLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void securityLogWriterLogLevelIsInfo() {
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void changesMainLogWriterLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(mainLogWriter.getLogWriterLevel()).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void changesDistributionConfigLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void changesLogConfigLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(logConfig.getLogLevel()).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void doesNotChangeSecurityLogWriterLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void doesNotChangeDistributionConfigSecurityLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void doesNotChangeLogConfigSecurityLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(logConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void changesGeodeLoggerLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.WARN);
-  }
-
-  @Test
-  public void doesNotChangeApplicationLoggerLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogLevelChangesWithDistributedSystemIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogLevelChangesWithDistributedSystemIntegrationTest.java
deleted file mode 100644
index 260c2cf..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogLevelChangesWithDistributedSystemIntegrationTest.java
+++ /dev/null
@@ -1,167 +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 org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
-import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_LEVEL;
-import static org.apache.geode.internal.logging.LogWriterLevel.INFO;
-import static org.apache.geode.internal.logging.LogWriterLevel.WARNING;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Properties;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for log level control using {@link DistributionConfig} with lifecycle of
- * {@link DistributedSystem}.
- */
-@Category(LoggingTest.class)
-public class LogLevelChangesWithDistributedSystemIntegrationTest {
-
-  private static final String APPLICATION_LOGGER_NAME = "com.application";
-
-  private InternalDistributedSystem system;
-  private Logger geodeLogger;
-  private Logger applicationLogger;
-  private InternalLogWriter mainLogWriter;
-  private InternalLogWriter securityLogWriter;
-  private DistributionConfig distributionConfig;
-  private LogConfig logConfig;
-
-  @Before
-  public void setUp() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_LEVEL, "INFO");
-    config.setProperty(SECURITY_LOG_LEVEL, "INFO");
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    distributionConfig = system.getConfig();
-    logConfig = system.getLogConfig();
-
-    mainLogWriter = (InternalLogWriter) system.getLogWriter();
-    securityLogWriter = (InternalLogWriter) system.getSecurityLogWriter();
-
-    geodeLogger = LogService.getLogger();
-    applicationLogger = LogManager.getLogger(APPLICATION_LOGGER_NAME);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    if (system != null) {
-      system.disconnect();
-    }
-  }
-
-  @Test
-  public void distributionConfigLogLevelIsInfo() {
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void distributionConfigSecurityLogLevelIsInfo() {
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void logConfigLogLevelIsInfo() {
-    assertThat(logConfig.getLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void logConfigSecurityLogLevelIsInfo() {
-    assertThat(logConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void mainLogWriterLevelIsInfo() {
-    assertThat(mainLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void securityLogWriterLevelIsInfo() {
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void changesMainLogWriterLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(mainLogWriter.getLogWriterLevel()).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void changesDistributionConfigLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void changesLogConfigLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(logConfig.getLogLevel()).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void doesNotChangeSecurityLogWriterLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void doesNotChangeDistributionConfigSecurityLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void doesNotChangeLogConfigSecurityLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(logConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-  }
-
-  @Test
-  public void changesGeodeLoggerLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.WARN);
-  }
-
-  @Test
-  public void doesNotChangeApplicationLoggerLogLevel() {
-    distributionConfig.setLogLevel(WARNING.intLevel());
-
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogServiceIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogServiceIntegrationTest.java
new file mode 100755
index 0000000..33fbce5
--- /dev/null
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LogServiceIntegrationTest.java
@@ -0,0 +1,236 @@
+/*
+ * 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 org.apache.geode.internal.logging.LogServiceIntegrationTestSupport.writeConfigFile;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.net.URL;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.core.config.ConfigurationFactory;
+import org.apache.logging.log4j.status.StatusLogger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.SystemErrRule;
+import org.junit.contrib.java.lang.system.SystemOutRule;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.ExternalResource;
+import org.junit.rules.TemporaryFolder;
+
+import org.apache.geode.internal.logging.log4j.Configurator;
+import org.apache.geode.test.junit.categories.LoggingTest;
+
+/**
+ * Integration tests for LogService and how it configures and uses log4j2
+ */
+@Category(LoggingTest.class)
+public class LogServiceIntegrationTest {
+
+  private static final String DEFAULT_CONFIG_FILE_NAME = "log4j2.xml";
+  private static final String CLI_CONFIG_FILE_NAME = "log4j2-cli.xml";
+
+  @Rule
+  public SystemErrRule systemErrRule = new SystemErrRule().enableLog();
+
+  @Rule
+  public SystemOutRule systemOutRule = new SystemOutRule().enableLog();
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Rule
+  public ExternalResource externalResource = new ExternalResource() {
+    @Override
+    protected void before() {
+      beforeConfigFileProp = System.getProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
+      beforeLevel = StatusLogger.getLogger().getLevel();
+
+      System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
+      StatusLogger.getLogger().setLevel(Level.OFF);
+
+      Configurator.shutdown();
+    }
+
+    @Override
+    protected void after() {
+      Configurator.shutdown();
+
+      System.clearProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
+      if (beforeConfigFileProp != null) {
+        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, beforeConfigFileProp);
+      }
+      StatusLogger.getLogger().setLevel(beforeLevel);
+
+      LogService.reconfigure();
+      assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+          .isTrue();
+    }
+  };
+
+  private String beforeConfigFileProp;
+  private Level beforeLevel;
+
+  private URL defaultConfigUrl;
+  private URL cliConfigUrl;
+
+  @Before
+  public void setUp() {
+    defaultConfigUrl = LogService.class.getResource(LogService.DEFAULT_CONFIG);
+    cliConfigUrl = LogService.class.getResource(LogService.CLI_CONFIG);
+  }
+
+  @After
+  public void after() {
+    // if either of these fail then log4j2 probably logged a failure to stdout
+    assertThat(systemErrRule.getLog()).isEmpty();
+    assertThat(systemOutRule.getLog()).isEmpty();
+  }
+
+  @Test
+  public void shouldPreferConfigurationFilePropertyIfSet() throws Exception {
+    File configFile = temporaryFolder.newFile(DEFAULT_CONFIG_FILE_NAME);
+    String configFileName = configFile.toURI().toString();
+    System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, configFileName);
+    writeConfigFile(configFile, Level.DEBUG);
+
+    LogService.reconfigure();
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isFalse();
+    assertThat(System.getProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY))
+        .isEqualTo(configFileName);
+    assertThat(LogService.getLogger().getName()).isEqualTo(getClass().getName());
+  }
+
+  @Test
+  public void shouldUseDefaultConfigIfNotConfigured() {
+    LogService.reconfigure();
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isTrue();
+    assertThat(System.getProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY))
+        .isNullOrEmpty();
+  }
+
+  @Test
+  public void defaultConfigShouldIncludeStdout() {
+    LogService.reconfigure();
+    Logger rootLogger = (Logger) LogService.getRootLogger();
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isTrue();
+    assertThat(rootLogger.getAppenders().get(LogService.STDOUT)).isNotNull();
+  }
+
+  @Test
+  public void removeConsoleAppenderShouldRemoveStdout() {
+    LogService.reconfigure();
+    Logger rootLogger = (Logger) LogService.getRootLogger();
+
+    LogService.removeConsoleAppender();
+
+    assertThat(rootLogger.getAppenders().get(LogService.STDOUT)).isNull();
+  }
+
+  @Test
+  public void restoreConsoleAppenderShouldRestoreStdout() {
+    LogService.reconfigure();
+    Logger rootLogger = (Logger) LogService.getRootLogger();
+
+    LogService.removeConsoleAppender();
+
+    assertThat(rootLogger.getAppenders().get(LogService.STDOUT)).isNull();
+
+    LogService.restoreConsoleAppender();
+
+    assertThat(rootLogger.getAppenders().get(LogService.STDOUT)).isNotNull();
+  }
+
+  @Test
+  public void removeAndRestoreConsoleAppenderShouldAffectRootLogger() {
+    LogService.reconfigure();
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isTrue();
+
+    Logger rootLogger = (Logger) LogService.getRootLogger();
+
+    // assert "Console" is present for ROOT
+    Appender appender = rootLogger.getAppenders().get(LogService.STDOUT);
+    assertThat(appender).isNotNull();
+
+    LogService.removeConsoleAppender();
+
+    // assert "Console" is not present for ROOT
+    appender = rootLogger.getAppenders().get(LogService.STDOUT);
+    assertThat(appender).isNull();
+
+    LogService.restoreConsoleAppender();
+
+    // assert "Console" is present for ROOT
+    appender = rootLogger.getAppenders().get(LogService.STDOUT);
+    assertThat(appender).isNotNull();
+  }
+
+  @Test
+  public void shouldNotUseDefaultConfigIfCliConfigSpecified() {
+    System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
+        cliConfigUrl.toString());
+
+    LogService.reconfigure();
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isFalse();
+    assertThat(System.getProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY))
+        .isEqualTo(cliConfigUrl.toString());
+    assertThat(LogService.getLogger().getName()).isEqualTo(getClass().getName());
+  }
+
+  @Test
+  public void isUsingGemFireDefaultConfigShouldBeTrueIfDefaultConfig() {
+    System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
+        defaultConfigUrl.toString());
+
+    assertThat(LogService.getConfiguration().getConfigurationSource().toString())
+        .contains(DEFAULT_CONFIG_FILE_NAME);
+    assertThat(LogService.isUsingGemFireDefaultConfig()).isTrue();
+  }
+
+  @Test
+  public void isUsingGemFireDefaultConfigShouldBeFalseIfCliConfig() {
+    System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
+        cliConfigUrl.toString());
+
+    assertThat(LogService.getConfiguration().getConfigurationSource().toString())
+        .doesNotContain(DEFAULT_CONFIG_FILE_NAME);
+    assertThat(LogService.isUsingGemFireDefaultConfig()).isFalse();
+  }
+
+  @Test
+  public void shouldUseCliConfigIfCliConfigIsSpecifiedViaClasspath() {
+    System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
+        "classpath:" + CLI_CONFIG_FILE_NAME);
+
+    assertThat(LogService.getConfiguration().getConfigurationSource().toString())
+        .contains(CLI_CONFIG_FILE_NAME);
+    assertThat(LogService.isUsingGemFireDefaultConfig()).isFalse();
+  }
+}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithDistributedSystemIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithDistributedSystemIntegrationTest.java
deleted file mode 100755
index 4880f5c..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithDistributedSystemIntegrationTest.java
+++ /dev/null
@@ -1,1597 +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 org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
-import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_LEVEL;
-import static org.apache.geode.internal.logging.LogWriterLevel.CONFIG;
-import static org.apache.geode.internal.logging.LogWriterLevel.ERROR;
-import static org.apache.geode.internal.logging.LogWriterLevel.FINE;
-import static org.apache.geode.internal.logging.LogWriterLevel.FINER;
-import static org.apache.geode.internal.logging.LogWriterLevel.FINEST;
-import static org.apache.geode.internal.logging.LogWriterLevel.INFO;
-import static org.apache.geode.internal.logging.LogWriterLevel.SEVERE;
-import static org.apache.geode.internal.logging.LogWriterLevel.WARNING;
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.getLoggerConfig;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.Properties;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.LogWriter;
-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.log4j.FastLogger;
-import org.apache.geode.internal.logging.log4j.Log4jAgent;
-import org.apache.geode.internal.logging.log4j.LogWriterLogger;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for logging with {@link InternalDistributedSystem} lifecycle.
- */
-@Category(LoggingTest.class)
-public class LoggingWithDistributedSystemIntegrationTest {
-
-  private static final String APPLICATION_LOGGER_NAME = "com.application";
-  private static final AtomicInteger COUNTER = new AtomicInteger();
-
-  private String currentWorkingDirPath;
-  private File mainLogFile;
-  private String mainLogFilePath;
-  private File securityLogFile;
-  private String securityLogFilePath;
-  private InternalDistributedSystem system;
-  private String prefix;
-
-  private Logger geodeLogger;
-  private Logger applicationLogger;
-
-  @Rule
-  public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() {
-    File currentWorkingDir = new File("");
-    currentWorkingDirPath = currentWorkingDir.getAbsolutePath();
-
-    String name = testName.getMethodName();
-    mainLogFile = new File(temporaryFolder.getRoot(), name + "-main.log");
-    mainLogFilePath = mainLogFile.getAbsolutePath();
-    securityLogFile = new File(temporaryFolder.getRoot(), name + "-security.log");
-    securityLogFilePath = securityLogFile.getAbsolutePath();
-
-    prefix = "ExpectedStrings: " + testName.getMethodName() + " message logged at level ";
-
-    geodeLogger = LogService.getLogger();
-    applicationLogger = LogManager.getLogger(APPLICATION_LOGGER_NAME);
-
-    Log4jAgent.updateLogLevel(Level.INFO, getLoggerConfig(applicationLogger));
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    if (system != null) {
-      system.disconnect();
-    }
-  }
-
-  @Test
-  public void applicationLoggerLevelIsInfo() {
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-  }
-
-  @Test
-  public void defaultConfigForLogging() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    LogConfig logConfig = system.getLogConfig();
-
-    assertThat(logConfig.getName()).isEqualTo("");
-    assertThat(logConfig.getLogFile().getAbsolutePath()).isEqualTo(currentWorkingDirPath);
-    assertThat(logConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(logConfig.getLogDiskSpaceLimit()).isEqualTo(0);
-    assertThat(logConfig.getLogFileSizeLimit()).isEqualTo(0);
-    assertThat(logConfig.getSecurityLogFile().getAbsolutePath()).isEqualTo(currentWorkingDirPath);
-    assertThat(logConfig.getSecurityLogLevel()).isEqualTo(CONFIG.intLevel());
-  }
-
-  @Test
-  public void bothLogFilesConfigured() throws Exception {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(SECURITY_LOG_FILE, securityLogFilePath);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriterLogger = (LogWriterLogger) system.getLogWriter();
-    LogWriterLogger securityLogWriterLogger = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> {
-      system.getLogWriter().info("log another line");
-
-      assertThat(mainLogFile).exists();
-      assertThat(securityLogFile).exists();
-
-      // assertThat mainLogFile is not empty
-      try (FileInputStream fis = new FileInputStream(mainLogFile)) {
-        assertThat(fis.available()).isGreaterThan(0);
-      }
-    });
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(CONFIG.intLevel());
-
-    assertThat(distributionConfig.getLogFile().getAbsolutePath()).isEqualTo(mainLogFilePath);
-    assertThat(distributionConfig.getSecurityLogFile().getAbsolutePath())
-        .isEqualTo(securityLogFilePath);
-
-    assertThat(system.getLogWriter()).isInstanceOf(LogWriterLogger.class);
-    assertThat(system.getSecurityLogWriter()).isInstanceOf(LogWriterLogger.class);
-
-    assertThat(logWriterLogger.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-    assertThat(securityLogWriterLogger.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    securityLogWriterLogger.info("test: security log file created at info");
-
-    // assertThat securityLogFile is not empty
-    try (FileInputStream fis = new FileInputStream(securityLogFile)) {
-      assertThat(fis.available()).isGreaterThan(0);
-    }
-
-    LogWriter logWriter = logWriterLogger;
-    assertThat(logWriter.finestEnabled()).isFalse();
-    assertThat(logWriter.finerEnabled()).isFalse();
-    assertThat(logWriter.fineEnabled()).isFalse();
-    assertThat(logWriter.configEnabled()).isTrue();
-    assertThat(logWriter.infoEnabled()).isTrue();
-    assertThat(logWriter.warningEnabled()).isTrue();
-    assertThat(logWriter.errorEnabled()).isTrue();
-    assertThat(logWriter.severeEnabled()).isTrue();
-
-    FastLogger logWriterFastLogger = logWriterLogger;
-    assertThat(logWriterFastLogger.isDelegating()).isFalse();
-    assertThat(logWriterFastLogger.isTraceEnabled()).isFalse();
-    assertThat(logWriterFastLogger.isDebugEnabled()).isFalse();
-    assertThat(logWriterFastLogger.isInfoEnabled()).isTrue();
-    assertThat(logWriterFastLogger.isWarnEnabled()).isTrue();
-    assertThat(logWriterFastLogger.isErrorEnabled()).isTrue();
-    assertThat(logWriterFastLogger.isFatalEnabled()).isTrue();
-
-    LogWriter securityLogWriter = securityLogWriterLogger;
-    assertThat(securityLogWriter.finestEnabled()).isFalse();
-    assertThat(securityLogWriter.finerEnabled()).isFalse();
-    assertThat(securityLogWriter.fineEnabled()).isFalse();
-    assertThat(securityLogWriter.configEnabled()).isTrue();
-    assertThat(securityLogWriter.infoEnabled()).isTrue();
-    assertThat(securityLogWriter.warningEnabled()).isTrue();
-    assertThat(securityLogWriter.errorEnabled()).isTrue();
-    assertThat(securityLogWriter.severeEnabled()).isTrue();
-
-    FastLogger securityLogWriterFastLogger = logWriterLogger;
-    assertThat(securityLogWriterFastLogger.isDelegating()).isFalse();
-    assertThat(securityLogWriterFastLogger.isTraceEnabled()).isFalse();
-    assertThat(securityLogWriterFastLogger.isDebugEnabled()).isFalse();
-    assertThat(securityLogWriterFastLogger.isInfoEnabled()).isTrue();
-    assertThat(securityLogWriterFastLogger.isWarnEnabled()).isTrue();
-    assertThat(securityLogWriterFastLogger.isErrorEnabled()).isTrue();
-    assertThat(securityLogWriterFastLogger.isFatalEnabled()).isTrue();
-  }
-
-  @Test
-  public void mainLogWriterLogsToMainLogFile() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // CONFIG level
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    String message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // FINE level
-
-    distributionConfig.setLogLevel(FINE.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-
-    message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR level
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(ERROR.intLevel());
-
-    message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void securityLogWriterLogsToMainLogFile() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // CONFIG level
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // FINE level
-
-    distributionConfig.setLogLevel(FINE.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR level
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void geodeLoggerLogsToMainLogFile() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // CONFIG level
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.INFO);
-
-    String message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // FINE level
-
-    distributionConfig.setLogLevel(FINE.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
-
-    message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR level
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.ERROR);
-
-    message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void applicationLoggerLogsToMainLogFile() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // CONFIG level
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-
-    String message = createMessage(Level.TRACE);
-    applicationLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    applicationLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    applicationLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    applicationLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    applicationLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    applicationLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // FINE level
-
-    distributionConfig.setLogLevel(FINE.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-
-    message = createMessage(Level.TRACE);
-    applicationLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    applicationLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    applicationLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    applicationLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    applicationLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    applicationLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR level
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(applicationLogger.getLevel()).isEqualTo(Level.INFO);
-
-    message = createMessage(Level.TRACE);
-    applicationLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    applicationLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    applicationLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    applicationLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    applicationLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    applicationLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void mainLogWriterLogsToMainLogFileWithMainLogLevelFine() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // FINE level
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-
-    String message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR level
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(ERROR.intLevel());
-
-    message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void securityLogWriterLogsToMainLogFileWithMainLogLevelFine() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void geodeLoggerLogsToMainLogFileWithMainLogLevelFine() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // FINE level
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
-
-    String message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR level
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.ERROR);
-
-    message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void mainLogWriterLogsToMainLogFileWithMainLogLevelDebug() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, Level.DEBUG.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // DEBUG LEVEL
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-
-    String message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR LEVEL
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(ERROR.intLevel());
-
-    message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void securityLogWriterLogsToMainLogFileWithMainLogLevelDebug() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, Level.DEBUG.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void geodeLoggerLogsToMainLogFileWithMainLogLevelDebug() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, Level.DEBUG.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    // DEBUG LEVEL
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
-
-    String message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    // ERROR LEVEL
-
-    distributionConfig.setLogLevel(ERROR.intLevel());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(ERROR.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.ERROR);
-
-    message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void logsToDifferentLogFilesWithMainLogLevelFine() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-    config.setProperty(SECURITY_LOG_FILE, securityLogFilePath);
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> {
-      assertThat(mainLogFile).exists();
-      assertThat(securityLogFile).exists();
-    });
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(CONFIG.intLevel());
-
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  @Test
-  public void logsToDifferentLogFilesWithBothLogLevelsFine() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-    config.setProperty(SECURITY_LOG_FILE, securityLogFilePath);
-    config.setProperty(SECURITY_LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> {
-      assertThat(mainLogFile).exists();
-      assertThat(securityLogFile).exists();
-    });
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(FINE.intLevel());
-
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(securityLogFile).contains(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  /**
-   * tests scenario where security log has not been set but a level has been set to a less granular
-   * level than that of the regular log. Verifies that the correct logs for security show up in the
-   * regular log as expected
-   */
-  @Test
-  public void mainLogWriterLogsToMainLogFileWithHigherSecurityLogLevel() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-    config.setProperty(SECURITY_LOG_LEVEL, INFO.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-
-    String message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  /**
-   * tests scenario where security log has not been set but a level has been set to a less granular
-   * level than that of the regular log. Verifies that the correct logs for security show up in the
-   * regular log as expected
-   */
-  @Test
-  public void securityLogWriterLogsToMainLogFileWithHigherSecurityLogLevel() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-    config.setProperty(SECURITY_LOG_LEVEL, INFO.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  /**
-   * tests scenario where security log has not been set but a level has been set to a less granular
-   * level than that of the regular log. Verifies that the correct logs for security show up in the
-   * regular log as expected
-   */
-  @Test
-  public void geodeLoggerLogsToMainLogFileWithHigherSecurityLogLevel() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, FINE.name());
-    config.setProperty(SECURITY_LOG_LEVEL, INFO.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(FINE.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(INFO.intLevel());
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.DEBUG);
-
-    String message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  /**
-   * tests scenario where security log has not been set but a level has been set to a more granular
-   * level than that of the regular log. Verifies that the correct logs for security show up in the
-   * regular log as expected
-   */
-  @Test
-  public void mainLogWriterLogsToMainLogFileWithLowerSecurityLogLevel() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, INFO.name());
-    config.setProperty(SECURITY_LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger logWriter = (LogWriterLogger) system.getLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(INFO.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(FINE.intLevel());
-
-    assertThat(logWriter.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    String message = createMessage(FINEST);
-    logWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    logWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    logWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(CONFIG);
-    logWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    logWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    logWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    logWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    logWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  /**
-   * tests scenario where security log has not been set but a level has been set to a more granular
-   * level than that of the regular log. Verifies that the correct logs for security show up in the
-   * regular log as expected
-   */
-  @Test
-  public void securityLogWriterLogsToMainLogFileWithLowerSecurityLogLevel() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, INFO.name());
-    config.setProperty(SECURITY_LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    LogWriterLogger securityLogWriter = (LogWriterLogger) system.getSecurityLogWriter();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(INFO.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(FINE.intLevel());
-
-    assertThat(securityLogWriter.getLogWriterLevel()).isEqualTo(FINE.intLevel());
-
-    String message = createMessage(FINEST);
-    securityLogWriter.finest(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINER);
-    securityLogWriter.finer(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(FINE);
-    securityLogWriter.fine(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(CONFIG);
-    securityLogWriter.config(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(INFO);
-    securityLogWriter.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(WARNING);
-    securityLogWriter.warning(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(ERROR);
-    securityLogWriter.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(SEVERE);
-    securityLogWriter.severe(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  /**
-   * tests scenario where security log has not been set but a level has been set to a more granular
-   * level than that of the regular log. Verifies that the correct logs for security show up in the
-   * regular log as expected
-   */
-  @Test
-  public void geodeLoggerLogsToMainLogFileWithLowerSecurityLogLevel() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFilePath);
-    config.setProperty(LOG_LEVEL, INFO.name());
-    config.setProperty(SECURITY_LOG_LEVEL, FINE.name());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    await().untilAsserted(() -> assertThat(mainLogFile).exists());
-
-    assertThat(distributionConfig.getLogLevel()).isEqualTo(INFO.intLevel());
-    assertThat(distributionConfig.getSecurityLogLevel()).isEqualTo(FINE.intLevel());
-
-    assertThat(geodeLogger.getLevel()).isEqualTo(Level.INFO);
-
-    String message = createMessage(Level.TRACE);
-    geodeLogger.trace(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.DEBUG);
-    geodeLogger.debug(message);
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(message);
-
-    message = createMessage(Level.INFO);
-    geodeLogger.info(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.WARN);
-    geodeLogger.warn(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.ERROR);
-    geodeLogger.error(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-
-    message = createMessage(Level.FATAL);
-    geodeLogger.fatal(message);
-    LogFileAssert.assertThat(mainLogFile).contains(message);
-  }
-
-  private String createMessage(LogWriterLevel logLevel) {
-    return prefix + logLevel.name() + " [" + COUNTER.incrementAndGet() + "]";
-  }
-
-  private String createMessage(Level level) {
-    return prefix + level.name() + " [" + COUNTER.incrementAndGet() + "]";
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithLocatorIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithLocatorIntegrationTest.java
deleted file mode 100644
index cd1ed35..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithLocatorIntegrationTest.java
+++ /dev/null
@@ -1,207 +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 org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.internal.logging.LogWriterLevel.CONFIG;
-import static org.apache.geode.internal.logging.LogWriterLevel.INFO;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.Properties;
-
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.distributed.Locator;
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.distributed.internal.InternalLocator;
-import org.apache.geode.internal.AvailablePort;
-import org.apache.geode.internal.logging.log4j.LogWriterLogger;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for logging with {@link InternalLocator} lifecycle.
- */
-@Category(LoggingTest.class)
-public class LoggingWithLocatorIntegrationTest {
-
-  private String name;
-  private int port;
-  private String currentWorkingDirPath;
-  private File logFile;
-  private File securityLogFile;
-
-  private InternalLocator locator;
-
-  @Rule
-  public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() throws Exception {
-    name = testName.getMethodName();
-
-    File currentWorkingDir = new File("");
-    currentWorkingDirPath = currentWorkingDir.getAbsolutePath();
-    logFile = new File(temporaryFolder.getRoot(),
-        testName.getMethodName() + "-system-" + System.currentTimeMillis() + ".log");
-    securityLogFile = new File("");
-
-    port = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
-  }
-
-  @After
-  public void tearDown() {
-    if (locator != null) {
-      locator.stop();
-    }
-  }
-
-  @Test
-  public void startLocatorDefaultLoggingConfig() throws Exception {
-    Properties config = new Properties();
-
-    locator = InternalLocator.startLocator(port, null, null, null, null, false, config, null);
-
-    LogConfig logConfig = locator.getLogConfig();
-
-    assertThat(logConfig.getName()).isEqualTo("");
-    assertThat(logConfig.getLogFile().getAbsolutePath()).isEqualTo(currentWorkingDirPath);
-    assertThat(logConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(logConfig.getLogDiskSpaceLimit()).isEqualTo(0);
-    assertThat(logConfig.getLogFileSizeLimit()).isEqualTo(0);
-    assertThat(logConfig.getSecurityLogFile().getAbsolutePath())
-        .isEqualTo(currentWorkingDirPath);
-    assertThat(logConfig.getSecurityLogLevel()).isEqualTo(CONFIG.intLevel());
-  }
-
-  @Test
-  public void startLocatorDefaultLoggingConfigWithLogFile() throws Exception {
-    Properties config = new Properties();
-
-    locator = InternalLocator.startLocator(port, logFile, null, null, null, false, config, null);
-
-    LogConfig logConfig = locator.getLogConfig();
-
-    assertThat(logConfig.getName()).isEqualTo("");
-    assertThat(logConfig.getLogFile().getAbsolutePath()).isEqualTo(logFile.getAbsolutePath());
-    assertThat(logConfig.getLogLevel()).isEqualTo(CONFIG.intLevel());
-    assertThat(logConfig.getLogDiskSpaceLimit()).isEqualTo(0);
-    assertThat(logConfig.getLogFileSizeLimit()).isEqualTo(0);
-    assertThat(logConfig.getSecurityLogFile().getAbsolutePath())
-        .isEqualTo(currentWorkingDirPath);
-    assertThat(logConfig.getSecurityLogLevel()).isEqualTo(CONFIG.intLevel());
-  }
-
-  @Test
-  public void startLocatorAndDSCreatesLogFile() throws Exception {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "localhost[" + port + "]");
-    config.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
-
-    locator = (InternalLocator) Locator.startLocatorAndDS(port, logFile, config);
-
-    await().untilAsserted(() -> assertThat(logFile).exists());
-
-    // assertThat logFile is not empty
-    try (FileInputStream fis = new FileInputStream(logFile)) {
-      assertThat(fis.available()).isGreaterThan(0);
-    }
-
-    InternalDistributedSystem system = (InternalDistributedSystem) locator.getDistributedSystem();
-
-    assertThat(system.getLogWriter()).isInstanceOf(LogWriterLogger.class);
-    assertThat(system.getSecurityLogWriter()).isInstanceOf(LogWriterLogger.class);
-
-    LogWriterLogger logWriterLogger = (LogWriterLogger) system.getLogWriter();
-    LogWriterLogger securityLogWriterLogger = (LogWriterLogger) system.getSecurityLogWriter();
-
-    assertThat(logWriterLogger.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-    assertThat(securityLogWriterLogger.getLogWriterLevel()).isEqualTo(INFO.intLevel());
-
-    DistributionConfig distributionConfig = system.getConfig();
-
-    assertThat(distributionConfig.getLogFile().getAbsolutePath())
-        .isEqualTo(logFile.getAbsolutePath());
-    assertThat(distributionConfig.getSecurityLogFile().getAbsolutePath())
-        .isEqualTo(currentWorkingDirPath);
-
-    assertThat(securityLogFile).doesNotExist();
-  }
-
-  @Test
-  public void locatorWithNoDS() throws Exception {
-    Properties config = new Properties();
-    config.setProperty(NAME, name);
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
-
-    locator = InternalLocator.startLocator(port, null, null, null, null, false, config, null);
-    Logger logger = LogService.getLogger();
-
-    // assert that logging goes to logFile
-    String logMessageBeforeClose = "Logging before locator is stopped in " + name;
-    logger.info(logMessageBeforeClose);
-
-    LogFileAssert.assertThat(logFile).contains(logMessageBeforeClose);
-
-    locator.stop();
-
-    // assert that logging stops going to logFile
-    String logMessageAfterClose = "Logging after locator is stopped in " + name;
-    logger.info(logMessageAfterClose);
-    LogFileAssert.assertThat(logFile).doesNotContain(logMessageAfterClose);
-  }
-
-  @Test
-  public void locatorWithDS() throws Exception {
-    Properties config = new Properties();
-    config.setProperty(NAME, name);
-    config.setProperty(LOG_FILE, logFile.getAbsolutePath());
-    config.setProperty(ENABLE_CLUSTER_CONFIGURATION, "false");
-
-    locator = (InternalLocator) InternalLocator.startLocatorAndDS(port, null, config);
-    Logger logger = LogService.getLogger();
-
-    // assert that logging goes to logFile
-    String logMessageBeforeClose = "Logging before locator is stopped in " + name;
-    logger.info(logMessageBeforeClose);
-
-    LogFileAssert.assertThat(logFile).contains(logMessageBeforeClose);
-
-    locator.stop();
-
-    // assert that logging stops going to logFile
-    String logMessageAfterClose = "Logging after locator is stopped in " + name;
-    logger.info(logMessageAfterClose);
-    LogFileAssert.assertThat(logFile).doesNotContain(logMessageAfterClose);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithLocatorLauncherIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithLocatorLauncherIntegrationTest.java
deleted file mode 100644
index 50d318a..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithLocatorLauncherIntegrationTest.java
+++ /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.
- */
-package org.apache.geode.internal.logging;
-
-import static org.apache.geode.internal.Banner.BannerHeader.displayValues;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.distributed.LocatorLauncher;
-import org.apache.geode.distributed.LocatorLauncherIntegrationTestCase;
-import org.apache.geode.internal.process.ProcessControllerFactory;
-import org.apache.geode.internal.process.ProcessType;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests of logging with {@link LocatorLauncher}.
- */
-@Category(LoggingTest.class)
-public class LoggingWithLocatorLauncherIntegrationTest extends LocatorLauncherIntegrationTestCase {
-
-  @Before
-  public void setUp() throws Exception {
-    System.setProperty(ProcessType.PROPERTY_TEST_PREFIX, getUniqueName() + "-");
-    assertThat(new ProcessControllerFactory().isAttachAPIFound()).isTrue();
-
-    givenRunningLocator();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    disconnectFromDS();
-  }
-
-  @Test
-  public void logFileExists() {
-    assertThat(getLogFile()).exists();
-  }
-
-  @Test
-  public void logFileContainsBanner() {
-    LogFileAssert.assertThat(getLogFile()).contains(displayValues());
-  }
-
-  @Test
-  public void logFileContainsBannerOnlyOnce() {
-    LogFileAssert.assertThat(getLogFile()).containsOnlyOnce(displayValues());
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithServerLauncherIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithServerLauncherIntegrationTest.java
deleted file mode 100644
index 182e1c4..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/LoggingWithServerLauncherIntegrationTest.java
+++ /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.
- */
-package org.apache.geode.internal.logging;
-
-import static org.apache.geode.internal.Banner.BannerHeader.displayValues;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.distributed.ServerLauncher;
-import org.apache.geode.distributed.ServerLauncherIntegrationTestCase;
-import org.apache.geode.internal.process.ProcessControllerFactory;
-import org.apache.geode.internal.process.ProcessType;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests of logging with {@link ServerLauncher}.
- */
-@Category(LoggingTest.class)
-public class LoggingWithServerLauncherIntegrationTest extends ServerLauncherIntegrationTestCase {
-
-  @Before
-  public void setUp() throws Exception {
-    System.setProperty(ProcessType.PROPERTY_TEST_PREFIX, getUniqueName() + "-");
-    assertThat(new ProcessControllerFactory().isAttachAPIFound()).isTrue();
-
-    givenRunningServer();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    disconnectFromDS();
-  }
-
-  @Test
-  public void logFileExists() {
-    assertThat(getLogFile()).exists();
-  }
-
-  @Test
-  public void logFileContainsBanner() {
-    LogFileAssert.assertThat(getLogFile()).contains(displayValues());
-  }
-
-  @Test
-  public void logFileContainsBannerOnlyOnce() {
-    LogFileAssert.assertThat(getLogFile()).containsOnlyOnce(displayValues());
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ManagerLogWriterFactoryIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ManagerLogWriterFactoryIntegrationTest.java
deleted file mode 100644
index d7264f4..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/ManagerLogWriterFactoryIntegrationTest.java
+++ /dev/null
@@ -1,152 +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 org.apache.geode.internal.logging.LogWriterLevel.FINE;
-import static org.apache.geode.internal.logging.LogWriterLevel.WARNING;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.File;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.internal.statistics.StatisticsConfig;
-
-/**
- * Integration tests for {@link ManagerLogWriterFactory}.
- */
-public class ManagerLogWriterFactoryIntegrationTest {
-
-  private File mainLogFile;
-  private String mainLogFilePath;
-  private File securityLogFile;
-  private String securityLogFilePath;
-  private LogConfig mainLogConfig;
-  private LogConfig securityLogConfig;
-  private StatisticsConfig statisticsConfig;
-
-  @Rule
-  public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() {
-    String name = getClass().getSimpleName() + "_" + testName.getMethodName();
-
-    mainLogFile = new File(temporaryFolder.getRoot(), name + "-main.log");
-    mainLogFilePath = mainLogFile.getAbsolutePath();
-
-    securityLogFile = new File(temporaryFolder.getRoot(), name + "-security.log");
-    securityLogFilePath = securityLogFile.getAbsolutePath();
-
-    mainLogConfig = mock(LogConfig.class);
-    securityLogConfig = mock(LogConfig.class);
-    statisticsConfig = mock(StatisticsConfig.class);
-
-    when(mainLogConfig.getLogFile()).thenReturn(mainLogFile);
-    when(mainLogConfig.getLogLevel()).thenReturn(FINE.intLevel());
-
-    when(securityLogConfig.getLogFile()).thenReturn(mainLogFile);
-    when(securityLogConfig.getLogLevel()).thenReturn(FINE.intLevel());
-    when(securityLogConfig.getSecurityLogFile()).thenReturn(securityLogFile);
-    when(securityLogConfig.getSecurityLogLevel()).thenReturn(WARNING.intLevel());
-  }
-
-  @Test
-  public void getLogFileReturnsMainLogFileIfSecurityIsFalse() {
-    File logFile = new ManagerLogWriterFactory().setSecurity(false).getLogFile(mainLogConfig);
-
-    assertThat(logFile.getAbsolutePath()).isEqualTo(mainLogFilePath);
-  }
-
-  @Test
-  public void getLogFileReturnsSecurityLogFileIfSecurityIsTrue() {
-    File logFile = new ManagerLogWriterFactory().setSecurity(true).getLogFile(securityLogConfig);
-
-    assertThat(logFile.getAbsolutePath()).isEqualTo(securityLogFilePath);
-  }
-
-  @Test
-  public void getLogLevelReturnsMainLogLevelIfSecurityIsFalse() {
-    int level = new ManagerLogWriterFactory().setSecurity(false).getLogLevel(mainLogConfig);
-
-    assertThat(level).isEqualTo(FINE.intLevel());
-  }
-
-  @Test
-  public void getLogLevelReturnsSecurityLogLevelIfSecurityIsTrue() {
-    int level = new ManagerLogWriterFactory().setSecurity(true).getLogLevel(securityLogConfig);
-
-    assertThat(level).isEqualTo(WARNING.intLevel());
-  }
-
-  @Test
-  public void createReturnsManagerLogWriterIfSecurityIsFalse() {
-    ManagerLogWriter logWriter =
-        new ManagerLogWriterFactory().setSecurity(false).create(mainLogConfig, statisticsConfig);
-
-    assertThat(logWriter).isNotInstanceOf(SecurityManagerLogWriter.class);
-  }
-
-  @Test
-  public void createUsesMainLogFileIfSecurityIsFalse() {
-    new ManagerLogWriterFactory().setSecurity(false).create(mainLogConfig, statisticsConfig);
-
-    assertThat(mainLogFile).exists();
-    assertThat(securityLogFile).doesNotExist();
-  }
-
-  @Test
-  public void createReturnsSecurityManagerLogWriterIfSecurityIsTrue() {
-    ManagerLogWriter logWriter =
-        new ManagerLogWriterFactory().setSecurity(true).create(securityLogConfig, statisticsConfig);
-
-    assertThat(logWriter).isInstanceOf(SecurityManagerLogWriter.class);
-  }
-
-  @Test
-  public void createUsesSecurityLogFileIfSecurityIsTrue() {
-    new ManagerLogWriterFactory().setSecurity(true).create(securityLogConfig, statisticsConfig);
-
-    assertThat(mainLogFile).doesNotExist();
-    assertThat(securityLogFile).exists();
-  }
-
-  @Test
-  public void createSetsConfigOnLogWriterIfSecurityIsFalse() {
-    ManagerLogWriter logWriter =
-        new ManagerLogWriterFactory().setSecurity(false).create(mainLogConfig, statisticsConfig);
-
-    assertThat(logWriter.getConfig()).isNotNull();
-    assertThat(logWriter.getConfig().getLogFile().getAbsolutePath()).isSameAs(mainLogFilePath);
-  }
-
-  @Test
-  public void createSetsConfigWithSecurityLogFileIfSecurityIsTrue() {
-    ManagerLogWriter logWriter =
-        new ManagerLogWriterFactory().setSecurity(true).create(securityLogConfig, statisticsConfig);
-
-    assertThat(logWriter.getConfig()).isNotNull().isInstanceOf(SecurityLogConfig.class);
-    assertThat(logWriter.getConfig().getLogFile().getAbsolutePath()).isSameAs(securityLogFilePath);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/MergeLogFilesIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/MergeLogFilesIntegrationTest.java
index 39fb22d..ba2a293 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/MergeLogFilesIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/MergeLogFilesIntegrationTest.java
@@ -44,7 +44,7 @@ import org.apache.geode.test.dunit.ThreadUtils;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
- * Integration tests for (new multi-threaded) {@link MergeLogFiles} utility.
+ * This class tests the functionality of the (new multi-threaded) {@link MergeLogFiles} utility.
  */
 @Category(LoggingTest.class)
 public class MergeLogFilesIntegrationTest {
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/NonBlankStrings.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/NonBlankStrings.java
deleted file mode 100644
index d215caf..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/NonBlankStrings.java
+++ /dev/null
@@ -1,27 +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 org.apache.commons.lang3.StringUtils.isNotBlank;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-public class NonBlankStrings {
-
-  public static List<String> nonBlankStrings(List<String> values) {
-    return values.stream().filter(s -> isNotBlank(s)).collect(Collectors.toList());
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/StartupConfigurationLoggingIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/StartupConfigurationLoggingIntegrationTest.java
deleted file mode 100644
index e76b0a0..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/StartupConfigurationLoggingIntegrationTest.java
+++ /dev/null
@@ -1,159 +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.lang.System.lineSeparator;
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.NAME;
-import static org.apache.geode.internal.logging.Configuration.STARTUP_CONFIGURATION;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.io.File;
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-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.Banner;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for logging of the startup configuration. Startup configuration consists of
- * {@link Configuration#STARTUP_CONFIGURATION} and {@link DistributionConfig#toLoggerString()}.
- */
-@Category(LoggingTest.class)
-public class StartupConfigurationLoggingIntegrationTest {
-
-  private File mainLogFile;
-  private InternalDistributedSystem system;
-  private String banner;
-  private String[] startupConfiguration;
-  private Logger geodeLogger;
-  private String logMessage;
-
-  @Rule
-  public TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @Before
-  public void setUp() {
-    String name = testName.getMethodName();
-    mainLogFile = new File(temporaryFolder.getRoot(), name + "-main.log");
-
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFile.getAbsolutePath());
-    config.setProperty(NAME, getClass().getSimpleName() + "_" + testName.getMethodName());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    banner = Banner.getString(null);
-
-    DistributionConfig distributionConfig = system.getConfig();
-    startupConfiguration = StringUtils
-        .split(STARTUP_CONFIGURATION + distributionConfig.toLoggerString(), lineSeparator());
-
-    geodeLogger = LogService.getLogger();
-    logMessage = "Logging in " + testName.getMethodName();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    if (system != null) {
-      system.disconnect();
-    }
-  }
-
-  @Test
-  public void startupConfigurationIsLoggedToFile() {
-    LogFileAssert.assertThat(mainLogFile).contains(startupConfiguration);
-  }
-
-  @Test
-  public void startupConfigurationIsLoggedToFileOnlyOnce() {
-    LogFileAssert.assertThat(mainLogFile).containsOnlyOnce(startupConfiguration);
-  }
-
-  @Test
-  public void startupConfigurationIsLoggedToFileAfterBanner() throws Exception {
-    List<String> bannerLines = Arrays.asList(StringUtils.split(banner, lineSeparator()));
-    List<String> startupConfigLines = Arrays.asList(startupConfiguration);
-    List<String> logLines = FileUtils.readLines(mainLogFile, Charset.defaultCharset());
-
-    boolean foundBanner = false;
-    boolean foundStartupConfig = false;
-
-    for (String line : logLines) {
-      if (bannerLines.contains(line)) {
-        assertThat(foundStartupConfig)
-            .as("Banner should be logged before startup configuration: " + logLines).isFalse();
-        foundBanner = true;
-      }
-      if (startupConfigLines.contains(line)) {
-        assertThat(foundBanner)
-            .as("Startup configuration should be logged before banner: " + logLines).isTrue();
-        foundStartupConfig = true;
-      }
-    }
-
-    assertThat(foundBanner).as("Banner not found in: " + logLines).isTrue();
-    assertThat(foundStartupConfig).as("Startup configuration not found in: " + logLines).isTrue();
-  }
-
-  @Test
-  public void startupConfigurationIsLoggedToFileBeforeLogMessage() throws Exception {
-    geodeLogger.info(logMessage);
-
-    List<String> startupConfigLines = Arrays.asList(startupConfiguration);
-    List<String> logLines = FileUtils.readLines(mainLogFile, Charset.defaultCharset());
-
-    boolean foundStartupConfig = false;
-    boolean foundLogMessage = false;
-
-    for (String line : logLines) {
-      if (startupConfigLines.contains(line)) {
-        assertThat(foundLogMessage)
-            .as("Startup configuration should be before log message: " + logLines).isFalse();
-        foundStartupConfig = true;
-      }
-      if (line.contains(logMessage)) {
-        assertThat(foundStartupConfig)
-            .as("Log message should be after startup configuration: " + logLines).isTrue();
-        foundLogMessage = true;
-      }
-    }
-
-    assertThat(foundStartupConfig).as("Startup configuration not found in: " + logLines).isTrue();
-    assertThat(foundLogMessage).as("Log message not found in: " + logLines).isTrue();
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/SystemOutRuleAndSystemErrRuleIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/SystemOutRuleAndSystemErrRuleIntegrationTest.java
deleted file mode 100644
index aded0b4..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/SystemOutRuleAndSystemErrRuleIntegrationTest.java
+++ /dev/null
@@ -1,98 +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 org.assertj.core.api.Assertions.assertThat;
-
-import java.io.PrintStream;
-
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.contrib.java.lang.system.SystemErrRule;
-import org.junit.contrib.java.lang.system.SystemOutRule;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Verifies behavior of {@code SystemOutRule} and {@code SystemErrRule} that other Geode logging
- * tests depend on. If this behavior changes, then those tests may also need to change.
- */
-@Category(LoggingTest.class)
-public class SystemOutRuleAndSystemErrRuleIntegrationTest {
-
-  private static PrintStream systemOutBeforeRule;
-  private static PrintStream systemErrBeforeRule;
-
-  private PrintStream systemOutAfterRule;
-  private PrintStream systemErrAfterRule;
-  private String message;
-
-  @Rule
-  public SystemOutRule systemOutRule = new SystemOutRule().enableLog();
-
-  @Rule
-  public SystemErrRule systemErrRule = new SystemErrRule().enableLog();
-
-  @BeforeClass
-  public static void beforeClass() {
-    systemOutBeforeRule = System.out;
-    systemErrBeforeRule = System.err;
-  }
-
-  @Before
-  public void setUp() {
-    systemOutAfterRule = System.out;
-    systemErrAfterRule = System.err;
-    message = "simple message";
-  }
-
-  @AfterClass
-  public static void afterClass() {
-    systemOutBeforeRule = null;
-    systemErrBeforeRule = null;
-  }
-
-  @Test
-  public void ruleDoesNotReceiveFromSystemOutBeforeRule() {
-    systemOutBeforeRule.println(message);
-
-    assertThat(systemOutRule.getLog()).doesNotContain(message);
-  }
-
-  @Test
-  public void ruleDoesReceiveFromSystemOutAfterRule() {
-    systemOutAfterRule.println(message);
-
-    assertThat(systemOutRule.getLog()).contains(message);
-  }
-
-  @Test
-  public void ruleDoesNotReceiveFromSystemErrBeforeRule() {
-    systemErrBeforeRule.println(message);
-
-    assertThat(systemErrRule.getLog()).doesNotContain(message);
-  }
-
-  @Test
-  public void ruleDoesReceiveFromSystemErrAfterRule() {
-    systemErrAfterRule.println(message);
-
-    assertThat(systemErrRule.getLog()).contains(message);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/AlertAppenderIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/AlertAppenderIntegrationTest.java
deleted file mode 100644
index 7b89360..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/AlertAppenderIntegrationTest.java
+++ /dev/null
@@ -1,261 +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.log4j;
-
-import static org.apache.geode.internal.alerting.AlertingProviderRegistry.getNullAlertingProvider;
-import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
-import static org.apache.geode.test.util.ResourceUtils.getResource;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-import java.net.URL;
-import java.util.Date;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.distributed.internal.ClusterDistributionManager;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.internal.alerting.AlertLevel;
-import org.apache.geode.internal.alerting.AlertMessaging;
-import org.apache.geode.internal.alerting.AlertingProviderRegistry;
-import org.apache.geode.internal.alerting.AlertingSession;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.junit.categories.AlertingTest;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for {@link AlertAppender}.
- */
-@Category({AlertingTest.class, LoggingTest.class})
-public class AlertAppenderIntegrationTest {
-
-  private static final String CONFIG_FILE_NAME = "AlertAppenderIntegrationTest_log4j2.xml";
-  private static final String APPENDER_NAME = "ALERT";
-
-  private static String configFilePath;
-
-  private AlertAppender alertAppender;
-  private InternalDistributedMember localMember;
-  private AlertingSession alertingSession;
-  private AlertMessaging alertMessaging;
-  private AlertingProviderRegistry alertingProviderRegistry;
-  private Logger logger;
-  private String logMessage;
-
-  @ClassRule
-  public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @BeforeClass
-  public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
-        .getAbsolutePath();
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    alertAppender =
-        loggerContextRule.getAppender(APPENDER_NAME, AlertAppender.class);
-
-    InternalDistributedSystem internalDistributedSystem =
-        mock(InternalDistributedSystem.class, RETURNS_DEEP_STUBS);
-    localMember = mock(InternalDistributedMember.class);
-    ClusterDistributionManager clusterDistributionManager = mock(ClusterDistributionManager.class);
-
-    when(internalDistributedSystem.getConfig().getName()).thenReturn(testName.getMethodName());
-    when(internalDistributedSystem.getDistributedMember()).thenReturn(localMember);
-    when(internalDistributedSystem.getDistributionManager()).thenReturn(clusterDistributionManager);
-    when(clusterDistributionManager.getSystem()).thenReturn(internalDistributedSystem);
-
-    alertingSession = AlertingSession.create();
-    alertMessaging = new AlertMessaging(internalDistributedSystem);
-    alertingProviderRegistry = AlertingProviderRegistry.get();
-
-    alertingSession.createSession(alertMessaging);
-    alertingSession.startSession();
-
-    logger = LogService.getLogger();
-    logMessage = "Logging in " + testName.getMethodName();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    alertingSession.stopSession();
-    alertingProviderRegistry.clear();
-    alertAppender.clearLogEvents();
-  }
-
-  @Test
-  public void getLogEventsIsEmptyByDefault() {
-    assertThat(alertAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void getLogEventsReturnsLoggedEvents() {
-    logger.warn(logMessage);
-
-    assertThat(alertAppender.getLogEvents()).hasSize(1);
-    LogEvent event = alertAppender.getLogEvents().get(0);
-    assertThat(event.getLoggerName()).isEqualTo(getClass().getName());
-    assertThat(event.getLevel()).isEqualTo(Level.WARN);
-    assertThat(event.getMessage().getFormattedMessage()).isEqualTo(logMessage);
-  }
-
-  @Test
-  public void skipsLogEventsWithoutMatchingAlertLevel() {
-    // AlertLevelConverter does not convert trace|debug|info Level to AlertLevel
-    logger.trace("trace");
-    logger.debug("debug");
-    logger.info("info");
-
-    assertThat(alertAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void pausedDoesNotAppend() {
-    alertAppender.pause();
-
-    logger.warn(logMessage);
-
-    assertThat(alertAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void resumeAfterPausedAppends() {
-    alertAppender.pause();
-    alertAppender.resume();
-
-    logger.warn(logMessage);
-
-    assertThat(alertAppender.getLogEvents()).hasSize(1);
-  }
-
-  @Test
-  public void resumeWithoutPauseStillLogs() {
-    alertAppender.resume();
-
-    logger.warn(logMessage);
-
-    assertThat(alertAppender.getLogEvents()).hasSize(1);
-  }
-
-  @Test
-  public void isPausedReturnsTrueAfterPause() {
-    alertAppender.pause();
-
-    assertThat(alertAppender.isPaused()).isTrue();
-  }
-
-  @Test
-  public void isPausedReturnsFalseAfterResume() {
-    alertAppender.pause();
-    alertAppender.resume();
-
-    assertThat(alertAppender.isPaused()).isFalse();
-  }
-
-  @Test
-  public void resumeWithoutPauseDoesNothing() {
-    alertAppender.resume();
-
-    assertThat(alertAppender.isPaused()).isFalse();
-  }
-
-  @Test
-  public void isPausedReturnsFalseByDefault() {
-    assertThat(alertAppender.isPaused()).isFalse();
-  }
-
-  @Test
-  public void alertMessagingExistsAfterOnConnect() {
-    alertAppender.createSession(alertMessaging);
-
-    assertThat(alertAppender.getAlertMessaging()).isNotNull();
-  }
-
-  @Test
-  public void alertMessagingDoesNotExistAfterOnDisconnect() {
-    alertAppender.createSession(alertMessaging);
-    alertAppender.stopSession();
-
-    assertThat(alertAppender.getAlertMessaging()).isNull();
-  }
-
-  @Test
-  public void sendsNoAlertsIfNoListeners() {
-    alertAppender.createSession(alertMessaging);
-    alertMessaging = spy(alertAppender.getAlertMessaging());
-    alertAppender.setAlertMessaging(alertMessaging);
-
-    logger.warn(logMessage);
-
-    assertThat(alertAppender.getLogEvents()).hasSize(1);
-    verifyZeroInteractions(alertMessaging);
-  }
-
-  @Test
-  public void sendsAlertIfListenerExists() {
-    alertAppender.createSession(alertMessaging);
-    alertMessaging = spy(alertAppender.getAlertMessaging());
-    alertAppender.setAlertMessaging(alertMessaging);
-    alertAppender.addAlertListener(localMember, AlertLevel.WARNING);
-
-    logger.warn(logMessage);
-
-    assertThat(alertAppender.getLogEvents()).hasSize(1);
-    verify(alertMessaging).sendAlert(eq(localMember), eq(AlertLevel.WARNING), any(Date.class),
-        anyString(), anyString(), isNull());
-  }
-
-  @Test
-  public void isRegisteredWithAlertingProviderRegistryDuringInitialization() {
-    assertThat(alertingProviderRegistry.getAlertingProvider()).isSameAs(alertAppender);
-  }
-
-  @Test
-  public void isUnregisteredWithAlertingProviderRegistryDuringCleanUp() {
-    alertAppender.stop();
-
-    assertThat(alertingProviderRegistry.getAlertingProvider()).isSameAs(getNullAlertingProvider());
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/BothLogWriterAppendersIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/BothLogWriterAppendersIntegrationTest.java
deleted file mode 100644
index b0d55d2..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/BothLogWriterAppendersIntegrationTest.java
+++ /dev/null
@@ -1,180 +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.log4j;
-
-import static org.apache.geode.internal.logging.Configuration.MAIN_LOGGER_NAME;
-import static org.apache.geode.internal.logging.Configuration.SECURITY_LOGGER_NAME;
-import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
-import static org.apache.geode.test.util.ResourceUtils.getResource;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.File;
-import java.net.URL;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.distributed.ConfigurationProperties;
-import org.apache.geode.internal.logging.LogConfig;
-import org.apache.geode.internal.logging.LogConfigSupplier;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.internal.logging.SessionContext;
-import org.apache.geode.internal.statistics.StatisticsConfig;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-import org.apache.geode.test.junit.categories.SecurityTest;
-
-/**
- * Integration tests for main and security {@link LogWriterAppender}s, loggers, and
- * {@link ConfigurationProperties#LOG_FILE} and {@link ConfigurationProperties#SECURITY_LOG_FILE}.
- */
-@Category({LoggingTest.class, SecurityTest.class})
-public class BothLogWriterAppendersIntegrationTest {
-
-  private static final String CONFIG_FILE_NAME = "BothLogWriterAppendersIntegrationTest_log4j2.xml";
-  private static final String MAIN_APPENDER_NAME = "LOGWRITER";
-  private static final String SECURITY_APPENDER_NAME = "SECURITYLOGWRITER";
-
-  private static String configFilePath;
-
-  private File securityLogFile;
-  private Logger mainGeodeLogger;
-  private Logger securityGeodeLogger;
-  private String logMessage;
-  private LogWriterAppender mainLogWriterAppender;
-  private LogWriterAppender securityLogWriterAppender;
-
-  @ClassRule
-  public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @BeforeClass
-  public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
-        .getAbsolutePath();
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    String name = testName.getMethodName();
-    File mainLogFile = new File(temporaryFolder.getRoot(), name + ".log");
-    securityLogFile = new File(temporaryFolder.getRoot(), name + "-security.log");
-
-    LogConfig logConfig = mock(LogConfig.class);
-    when(logConfig.getName()).thenReturn(name);
-    when(logConfig.getLogFile()).thenReturn(mainLogFile);
-    when(logConfig.getSecurityLogFile()).thenReturn(securityLogFile);
-
-    LogConfigSupplier logConfigSupplier = mock(LogConfigSupplier.class);
-    when(logConfigSupplier.getLogConfig()).thenReturn(logConfig);
-    when(logConfigSupplier.getStatisticsConfig()).thenReturn(mock(StatisticsConfig.class));
-
-    SessionContext sessionContext = mock(SessionContext.class);
-    when(sessionContext.getLogConfigSupplier()).thenReturn(logConfigSupplier);
-
-    mainGeodeLogger = LogService.getLogger(MAIN_LOGGER_NAME);
-    securityGeodeLogger = LogService.getLogger(SECURITY_LOGGER_NAME);
-
-    logMessage = "Logging in " + testName.getMethodName();
-
-    mainLogWriterAppender = loggerContextRule.getAppender(MAIN_APPENDER_NAME,
-        LogWriterAppender.class);
-    securityLogWriterAppender = loggerContextRule.getAppender(SECURITY_APPENDER_NAME,
-        LogWriterAppender.class);
-
-    mainLogWriterAppender.createSession(sessionContext);
-    mainLogWriterAppender.startSession();
-    mainLogWriterAppender.clearLogEvents();
-
-    securityLogWriterAppender.createSession(sessionContext);
-    securityLogWriterAppender.startSession();
-    securityLogWriterAppender.clearLogEvents();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    mainLogWriterAppender.stopSession();
-    securityLogWriterAppender.stopSession();
-  }
-
-  @Test
-  public void mainLogWriterAppenderLogEventsIsEmptyByDefault() {
-    assertThat(mainLogWriterAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void securityLogWriterAppenderLogEventsIsEmptyByDefault() {
-    assertThat(securityLogWriterAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void geodeLoggerAppendsToLogWriterAppender() {
-    mainGeodeLogger.info(logMessage);
-
-    assertThat(mainLogWriterAppender.getLogEvents()).hasSize(1);
-  }
-
-  @Test
-  public void geodeLoggerDoesNotAppendToSecurityLogWriterAppender() {
-    mainGeodeLogger.info(logMessage);
-
-    assertThat(securityLogWriterAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void geodeSecurityLoggerAppendsToSecurityLogWriterAppender() {
-    securityGeodeLogger.info(logMessage);
-
-    assertThat(securityLogWriterAppender.getLogEvents()).hasSize(1);
-  }
-
-  @Test
-  public void geodeSecurityLoggerDoesNotAppendToLogWriterAppender() {
-    securityGeodeLogger.info(logMessage);
-
-    assertThat(mainLogWriterAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void securityGeodeLoggerLogsToSecurityLogFile() {
-    securityGeodeLogger.info(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).exists().contains(logMessage);
-  }
-
-  @Test
-  public void securityGeodeLoggerDoesNotLogToMainLogFile() {
-    securityGeodeLogger.info(logMessage);
-
-    assertThat(mainLogWriterAppender.getLogEvents()).isEmpty();
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CacheWithDefaultAppendersIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CacheWithDefaultAppendersIntegrationTest.java
deleted file mode 100644
index 0956da9..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CacheWithDefaultAppendersIntegrationTest.java
+++ /dev/null
@@ -1,96 +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.log4j;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.ALERT_APPENDER_NAME;
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.GEODE_CONSOLE_APPENDER_NAME;
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.LOGWRITER_APPENDER_NAME;
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.SECURITY_LOGWRITER_APPENDER_NAME;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Properties;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import org.apache.geode.cache.CacheFactory;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Validates the default appenders that should exist when a {@code Cache} is created.
- */
-@Category(LoggingTest.class)
-public class CacheWithDefaultAppendersIntegrationTest {
-
-  private InternalCache cache;
-  private Configuration configuration;
-
-  @Before
-  public void setUp() {
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-
-    cache = (InternalCache) new CacheFactory(config).create();
-
-    Logger coreLogger = (Logger) LogManager.getRootLogger();
-    LoggerContext context = coreLogger.getContext();
-
-    configuration = context.getConfiguration();
-  }
-
-  @After
-  public void tearDown() {
-    cache.close();
-  }
-
-  @Test
-  public void hasGeodeConsoleAppenderNamed_GEODE_CONSOLE_APPENDER_NAME() {
-    Appender appender = configuration.getAppender(GEODE_CONSOLE_APPENDER_NAME);
-
-    assertThat(appender).isNotNull().isInstanceOf(GeodeConsoleAppender.class);
-  }
-
-  @Test
-  public void hasAlertAppenderNamed_ALERT_APPENDER_NAME() {
-    Appender appender = configuration.getAppender(ALERT_APPENDER_NAME);
-
-    assertThat(appender).isNotNull().isInstanceOf(AlertAppender.class);
-  }
-
-  @Test
-  public void hasLogWriterAppenderNamed_LOGWRITER_APPENDER_NAME() {
-    Appender appender = configuration.getAppender(LOGWRITER_APPENDER_NAME);
-
-    assertThat(appender).isNotNull().isInstanceOf(LogWriterAppender.class);
-  }
-
-  @Test
-  public void hasLogWriterAppenderNamed_SECURITY_LOGWRITER_APPENDER_NAME() {
-    Appender appender = configuration.getAppender(SECURITY_LOGWRITER_APPENDER_NAME);
-
-    assertThat(appender).isNotNull().isInstanceOf(LogWriterAppender.class);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConfigurationWithLogLevelChangesIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConfigurationWithLogLevelChangesIntegrationTest.java
deleted file mode 100644
index 7509da3..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConfigurationWithLogLevelChangesIntegrationTest.java
+++ /dev/null
@@ -1,226 +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.log4j;
-
-import static org.apache.geode.internal.logging.Configuration.DEFAULT_LOGWRITER_LEVEL;
-import static org.apache.geode.internal.logging.Configuration.create;
-import static org.apache.geode.internal.logging.InternalLogWriter.FINE_LEVEL;
-import static org.apache.geode.internal.logging.InternalLogWriter.WARNING_LEVEL;
-import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
-import static org.apache.geode.test.util.ResourceUtils.getResource;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.net.URL;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.internal.logging.Configuration;
-import org.apache.geode.internal.logging.Configuration.LogLevelUpdateOccurs;
-import org.apache.geode.internal.logging.Configuration.LogLevelUpdateScope;
-import org.apache.geode.internal.logging.LogConfig;
-import org.apache.geode.internal.logging.LogConfigSupplier;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for {@link Configuration} and log level changes with
- * {@link GeodeConsoleAppender}.
- */
-@Category(LoggingTest.class)
-public class ConfigurationWithLogLevelChangesIntegrationTest {
-
-  private static final String CONFIG_FILE_NAME =
-      "ConfigurationWithLogLevelChangesIntegrationTest_log4j2.xml";
-  private static final String APPENDER_NAME = "STDOUT";
-  private static final String APPLICATION_LOGGER_NAME = "com.company.application";
-
-  private static String configFilePath;
-
-  private LogConfig config;
-  private Configuration configuration;
-  private Logger geodeLogger;
-  private Logger applicationLogger;
-  private String logMessage;
-  private GeodeConsoleAppender geodeConsoleAppender;
-
-  @ClassRule
-  public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @BeforeClass
-  public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
-        .getAbsolutePath();
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    config = mock(LogConfig.class);
-    when(config.getLogLevel()).thenReturn(DEFAULT_LOGWRITER_LEVEL);
-    when(config.getSecurityLogLevel()).thenReturn(DEFAULT_LOGWRITER_LEVEL);
-
-    LogConfigSupplier logConfigSupplier = mock(LogConfigSupplier.class);
-    when(logConfigSupplier.getLogConfig()).thenReturn(config);
-
-    configuration = create(LogLevelUpdateOccurs.ALWAYS, LogLevelUpdateScope.GEODE_LOGGERS);
-    configuration.initialize(logConfigSupplier);
-
-    geodeLogger = LogService.getLogger();
-    applicationLogger = LogService.getLogger(APPLICATION_LOGGER_NAME);
-
-    logMessage = "Logging in " + testName.getMethodName();
-
-    geodeConsoleAppender =
-        loggerContextRule.getAppender(APPENDER_NAME, GeodeConsoleAppender.class);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    geodeConsoleAppender.clearLogEvents();
-    configuration.shutdown();
-  }
-
-  @Test
-  public void geodeLoggerDebugNotLoggedByDefault() {
-    // act
-    geodeLogger.debug(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void geodeLoggerDebugLoggedAfterLoweringLogLevelToFine() {
-    // arrange
-    when(config.getLogLevel()).thenReturn(FINE_LEVEL);
-    configuration.configChanged();
-
-    // act
-    geodeLogger.debug(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).hasSize(1);
-    LogEvent event = geodeConsoleAppender.getLogEvents().get(0);
-    assertThat(event.getLoggerName()).isEqualTo(getClass().getName());
-    assertThat(event.getLevel()).isEqualTo(Level.DEBUG);
-    assertThat(event.getMessage().getFormattedMessage()).isEqualTo(logMessage);
-  }
-
-  @Test
-  public void geodeLoggerDebugNotLoggedAfterRestoringLogLevelToDefault() {
-    // arrange
-    when(config.getLogLevel()).thenReturn(FINE_LEVEL);
-    configuration.configChanged();
-
-    // re-arrange
-    geodeConsoleAppender.clearLogEvents();
-    when(config.getLogLevel()).thenReturn(DEFAULT_LOGWRITER_LEVEL);
-    configuration.configChanged();
-
-    // act
-    geodeLogger.debug(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void applicationLoggerBelowLevelUnaffectedByLoweringLogLevelChanges() {
-    // arrange
-    when(config.getLogLevel()).thenReturn(FINE_LEVEL);
-    configuration.configChanged();
-
-    // act
-    applicationLogger.debug(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).isEmpty();
-  }
-
-  @Test
-  public void applicationLoggerInfoLoggedByDefault() {
-    // act
-    applicationLogger.info(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).hasSize(1);
-    LogEvent event = geodeConsoleAppender.getLogEvents().get(0);
-    assertThat(event.getLoggerName()).isEqualTo(APPLICATION_LOGGER_NAME);
-    assertThat(event.getLevel()).isEqualTo(Level.INFO);
-    assertThat(event.getMessage().getFormattedMessage()).isEqualTo(logMessage);
-  }
-
-  @Test
-  public void applicationLoggerAboveLevelUnaffectedByLoweringLogLevelChanges() {
-    // arrange
-    geodeConsoleAppender.clearLogEvents();
-    when(config.getLogLevel()).thenReturn(FINE_LEVEL);
-    configuration.configChanged();
-
-    // act
-    applicationLogger.info(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).hasSize(1);
-  }
-
-  @Test
-  public void applicationLoggerAboveLevelUnaffectedByRaisingLogLevelChanges() {
-    // arrange
-    geodeConsoleAppender.clearLogEvents();
-    when(config.getLogLevel()).thenReturn(WARNING_LEVEL);
-    configuration.configChanged();
-
-    // act
-    applicationLogger.info(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).hasSize(1);
-  }
-
-  @Test
-  public void infoStatementNotLoggedAfterRaisingLogLevelToWarning() {
-    // arrange
-    geodeConsoleAppender.clearLogEvents();
-    when(config.getLogLevel()).thenReturn(WARNING_LEVEL);
-    configuration.configChanged();
-
-    // act
-    geodeLogger.info(logMessage);
-
-    // assert
-    assertThat(geodeConsoleAppender.getLogEvents()).isEmpty();
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
index 931cb1c..2001d44 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithLoggerContextRuleIntegrationTest.java
@@ -22,80 +22,87 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.net.URL;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.LifeCycle;
+import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.appender.ConsoleAppender;
 import org.apache.logging.log4j.core.appender.DefaultErrorHandler;
 import org.apache.logging.log4j.core.appender.OutputStreamManager;
 import org.apache.logging.log4j.junit.LoggerContextRule;
+import org.apache.logging.log4j.test.appender.ListAppender;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.contrib.java.lang.system.SystemErrRule;
 import org.junit.contrib.java.lang.system.SystemOutRule;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
 
 import org.apache.geode.test.junit.categories.LoggingTest;
 
-/**
- * Verifies behavior of {@code SystemOutRule} with {@code LoggerContextRule} that other Geode
- * logging tests depends on. If this behavior changes, then those tests may also need to change.
- */
 @Category(LoggingTest.class)
 public class ConsoleAppenderWithLoggerContextRuleIntegrationTest {
 
-  private static final String CONFIG_FILE_NAME =
-      "ConsoleAppenderWithLoggerContextRuleIntegrationTest_log4j2.xml";
-  private static final String APPENDER_NAME = "STDOUT";
-
   private static String configFilePath;
 
-  private Logger logger;
+  private Logger postConfigLogger;
   private String logMessage;
-  private ConsoleAppender consoleAppender;
 
   @ClassRule
   public static SystemOutRule systemOutRule = new SystemOutRule().enableLog();
 
   @ClassRule
+  public static SystemErrRule systemErrRule = new SystemErrRule().enableLog();
+
+  @ClassRule
   public static TemporaryFolder temporaryFolder = new TemporaryFolder();
 
   @Rule
   public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
 
-  @Rule
-  public TestName testName = new TestName();
-
   @BeforeClass
   public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
+    String configFileName =
+        ConsoleAppenderWithLoggerContextRuleIntegrationTest.class.getSimpleName() + "_log4j2.xml";
+    URL resource = getResource(configFileName);
+    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), configFileName)
         .getAbsolutePath();
   }
 
   @Before
   public void setUp() throws Exception {
-    logger = LogManager.getLogger();
-    logMessage = "Logging in " + testName.getMethodName();
-    consoleAppender = loggerContextRule.getAppender(APPENDER_NAME, ConsoleAppender.class);
+    postConfigLogger = LogManager.getLogger();
+    logMessage = "this is a log statement";
 
     systemOutRule.clearLog();
+    systemErrRule.clearLog();
   }
 
   @Test
-  public void consoleAppenderIsConfigured() {
+  public void delegateConsoleAppenderIsConfigured() {
+    assertThat(loggerContextRule.getListAppender("LIST")).isNotNull();
+
+    ListAppender listAppender = findAppender(ListAppender.class);
+    assertThat(listAppender).isNotNull();
+
+    ConsoleAppender consoleAppender = findAppender(ConsoleAppender.class);
+    assertThat(consoleAppender).isNotNull();
+
     assertThat(consoleAppender.getFilter()).isNull();
     assertThat(consoleAppender.getHandler()).isInstanceOf(DefaultErrorHandler.class);
     assertThat(consoleAppender.getImmediateFlush()).isTrue();
     assertThat(consoleAppender.getLayout()).isNotNull();
     assertThat(consoleAppender.getManager()).isInstanceOf(OutputStreamManager.class);
-    assertThat(consoleAppender.getName()).isEqualTo(APPENDER_NAME);
+    assertThat(consoleAppender.getName()).isEqualTo("STDOUT");
     assertThat(consoleAppender.getState()).isSameAs(LifeCycle.State.STARTED);
     assertThat(consoleAppender.getTarget()).isSameAs(ConsoleAppender.Target.SYSTEM_OUT);
 
@@ -109,10 +116,27 @@ public class ConsoleAppenderWithLoggerContextRuleIntegrationTest {
   }
 
   @Test
-  public void staticSystemOutRuleCapturesConsoleAppenderOutput() {
-    logger.info(logMessage);
+  public void staticSystemOutRuleCapturesConsoleAppenderOutputFromPostConfigLogger() {
+    postConfigLogger.info(logMessage);
 
     assertThat(systemOutRule.getLog()).contains(Level.INFO.name().toLowerCase());
     assertThat(systemOutRule.getLog()).contains(logMessage);
+
+    assertThat(systemErrRule.getLog()).isEmpty();
+  }
+
+  private <T extends Appender> T findAppender(Class<T> appenderClass) {
+    LoggerContext loggerContext =
+        ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).getContext();
+    Map<String, Appender> appenders = loggerContext.getConfiguration().getAppenders();
+    List<Class<? extends Appender>> appenderClasses = new ArrayList<>();
+    for (Appender appender : appenders.values()) {
+      appenderClasses.add(appender.getClass());
+      if (appenderClass.isAssignableFrom(appender.getClass())) {
+        return appenderClass.cast(appender);
+      }
+    }
+    assertThat(appenderClasses).contains(appenderClass);
+    return null;
   }
 }
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithSystemOutRuleIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithSystemOutRuleIntegrationTest.java
new file mode 100644
index 0000000..22d48a6
--- /dev/null
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/ConsoleAppenderWithSystemOutRuleIntegrationTest.java
@@ -0,0 +1,182 @@
+/*
+ * 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.log4j;
+
+import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
+import static org.apache.geode.test.util.ResourceUtils.getResource;
+import static org.apache.logging.log4j.core.config.ConfigurationFactory.CONFIGURATION_FILE_PROPERTY;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.LifeCycle;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
+import org.apache.logging.log4j.core.appender.DefaultErrorHandler;
+import org.apache.logging.log4j.core.appender.OutputStreamManager;
+import org.apache.logging.log4j.status.StatusLogger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.contrib.java.lang.system.SystemErrRule;
+import org.junit.contrib.java.lang.system.SystemOutRule;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.test.junit.categories.LoggingTest;
+
+/**
+ * Verifies that we can capture output of {@code ConsoleAppender}. If this behavior changes, then
+ * Geode logging tests may also need to change.
+ */
+@Category(LoggingTest.class)
+public class ConsoleAppenderWithSystemOutRuleIntegrationTest {
+
+  private static final Logger classLoadedLogger = LogManager.getLogger();
+
+  private String beforeConfigFile;
+  private Level beforeLevel;
+
+  private Logger preConfigLogger;
+  private Logger postConfigLogger;
+  private String logMessage;
+
+  @ClassRule
+  public static SystemOutRule systemOutRule = new SystemOutRule().enableLog();
+
+  @ClassRule
+  public static SystemErrRule systemErrRule = new SystemErrRule().enableLog();
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Before
+  public void setUp() throws Exception {
+    preConfigLogger = LogManager.getLogger();
+
+    Configurator.shutdown();
+
+    beforeConfigFile = System.getProperty(CONFIGURATION_FILE_PROPERTY);
+    beforeLevel = StatusLogger.getLogger().getLevel();
+
+    String configFileName = getClass().getSimpleName() + "_log4j2.xml";
+    File configFile = createFileFromResource(getResource(configFileName),
+        temporaryFolder.getRoot(), configFileName);
+
+    System.setProperty(CONFIGURATION_FILE_PROPERTY, configFile.getAbsolutePath());
+    LogService.reconfigure();
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isFalse();
+
+    systemOutRule.clearLog();
+    systemErrRule.clearLog();
+
+    postConfigLogger = LogManager.getLogger();
+    logMessage = "this is a log statement";
+  }
+
+  @After
+  public void tearDown() {
+    Configurator.shutdown();
+
+    System.clearProperty(CONFIGURATION_FILE_PROPERTY);
+    if (beforeConfigFile != null) {
+      System.setProperty(CONFIGURATION_FILE_PROPERTY, beforeConfigFile);
+    }
+    StatusLogger.getLogger().setLevel(beforeLevel);
+
+    LogService.reconfigure();
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isTrue();
+  }
+
+  @Test
+  public void delegateConsoleAppenderIsConfigured() {
+    ConsoleAppender consoleAppender = findAppender(ConsoleAppender.class);
+    assertThat(consoleAppender).isNotNull();
+
+    assertThat(consoleAppender.getFilter()).isNull();
+    assertThat(consoleAppender.getHandler()).isInstanceOf(DefaultErrorHandler.class);
+    assertThat(consoleAppender.getImmediateFlush()).isTrue();
+    assertThat(consoleAppender.getLayout()).isNotNull();
+    assertThat(consoleAppender.getManager()).isInstanceOf(OutputStreamManager.class);
+    assertThat(consoleAppender.getName()).isEqualTo("STDOUT");
+    assertThat(consoleAppender.getState()).isSameAs(LifeCycle.State.STARTED);
+    assertThat(consoleAppender.getTarget()).isSameAs(ConsoleAppender.Target.SYSTEM_OUT);
+
+    OutputStreamManager outputStreamManager = consoleAppender.getManager();
+    assertThat(outputStreamManager.isOpen()).isTrue();
+    assertThat(outputStreamManager.getByteBuffer()).isInstanceOf(ByteBuffer.class);
+    assertThat(outputStreamManager.hasOutputStream()).isTrue();
+    assertThat(outputStreamManager.getContentFormat()).isEmpty();
+    assertThat(outputStreamManager.getLoggerContext()).isNull();
+    assertThat(outputStreamManager.getName()).isEqualTo("SYSTEM_OUT.false.false");
+  }
+
+  @Test
+  public void staticSystemOutRuleCapturesConsoleAppenderOutputFromPostConfigLogger() {
+    postConfigLogger.info(logMessage);
+
+    assertThat(systemOutRule.getLog()).contains(Level.INFO.name().toLowerCase());
+    assertThat(systemOutRule.getLog()).contains(logMessage);
+
+    assertThat(systemErrRule.getLog()).isEmpty();
+  }
+
+  @Test
+  public void staticSystemOutRuleFailsToCaptureConsoleAppenderOutputFromPreConfigLogger() {
+    preConfigLogger.info(logMessage);
+
+    assertThat(systemOutRule.getLog()).isEmpty();
+    assertThat(systemErrRule.getLog()).isEmpty();
+  }
+
+  @Test
+  public void staticSystemOutRuleFailsToCaptureConsoleAppenderOutputFromClassLoadedLogger() {
+    classLoadedLogger.info(logMessage);
+
+    assertThat(systemOutRule.getLog()).isEmpty();
+    assertThat(systemErrRule.getLog()).isEmpty();
+  }
+
+  private <T extends Appender> T findAppender(Class<T> appenderClass) {
+    LoggerContext loggerContext =
+        ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).getContext();
+    Map<String, Appender> appenders = loggerContext.getConfiguration().getAppenders();
+    List<Class<? extends Appender>> appenderClasses = new ArrayList<>();
+    for (Appender appender : appenders.values()) {
+      appenderClasses.add(appender.getClass());
+      if (appenderClass.isAssignableFrom(appender.getClass())) {
+        return appenderClass.cast(appender);
+      }
+    }
+    assertThat(appenderClasses).contains(appenderClass);
+    return null;
+  }
+}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CacheWithCustomLogConfigIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CustomConfigWithCacheIntegrationTest.java
similarity index 89%
rename from geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CacheWithCustomLogConfigIntegrationTest.java
rename to geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CustomConfigWithCacheIntegrationTest.java
index f6b0b6f..bf9e9d9 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CacheWithCustomLogConfigIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CustomConfigWithCacheIntegrationTest.java
@@ -40,20 +40,18 @@ import org.junit.contrib.java.lang.system.SystemErrRule;
 import org.junit.contrib.java.lang.system.SystemOutRule;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
 
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
+import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
- * Integration tests for {@link Cache} with custom {@code log4j2.xml}.
+ * Integration tests with custom log4j2 configuration.
  */
 @Category(LoggingTest.class)
-public class CacheWithCustomLogConfigIntegrationTest {
+public class CustomConfigWithCacheIntegrationTest {
 
-  private static final String CONFIG_FILE_NAME =
-      "CacheWithCustomLogConfigIntegrationTest_log4j2.xml";
   private static final String CONFIG_LAYOUT_PREFIX = "CUSTOM";
   private static final String CUSTOM_REGEX_STRING =
       "CUSTOM: level=[A-Z]+ time=\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3} [^ ]{3} message=.*[\\n]+throwable=.*$";
@@ -61,11 +59,12 @@ public class CacheWithCustomLogConfigIntegrationTest {
 
   private static String configFilePath;
 
-  private Cache cache;
   private LogWriterLogger logWriterLogger;
   private String logMessage;
   private ListAppender listAppender;
 
+  private Cache cache;
+
   @ClassRule
   public static SystemOutRule systemOutRule = new SystemOutRule().enableLog();
 
@@ -78,13 +77,12 @@ public class CacheWithCustomLogConfigIntegrationTest {
   @Rule
   public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
 
-  @Rule
-  public TestName testName = new TestName();
-
   @BeforeClass
   public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
+    String configFileName =
+        CustomConfigWithCacheIntegrationTest.class.getSimpleName() + "_log4j2.xml";
+    URL resource = getResource(configFileName);
+    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), configFileName)
         .getAbsolutePath();
   }
 
@@ -98,7 +96,11 @@ public class CacheWithCustomLogConfigIntegrationTest {
     cache = new CacheFactory(config).create();
 
     logWriterLogger = (LogWriterLogger) cache.getLogger();
-    logMessage = "Logging in " + testName.getMethodName();
+    logMessage = "this is a log statement";
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isFalse();
+
     listAppender = loggerContextRule.getListAppender("CUSTOM");
 
     systemOutRule.clearLog();
@@ -107,7 +109,9 @@ public class CacheWithCustomLogConfigIntegrationTest {
 
   @After
   public void tearDown() throws Exception {
-    cache.close();
+    if (cache != null) {
+      cache.close();
+    }
   }
 
   @Test
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/LogServiceWithCustomLogConfigIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CustomConfigWithLogServiceIntegrationTest.java
similarity index 83%
rename from geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/LogServiceWithCustomLogConfigIntegrationTest.java
rename to geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CustomConfigWithLogServiceIntegrationTest.java
index 4d04fc0..23c6f79 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/LogServiceWithCustomLogConfigIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/CustomConfigWithLogServiceIntegrationTest.java
@@ -14,7 +14,6 @@
  */
 package org.apache.geode.internal.logging.log4j;
 
-import static org.apache.geode.internal.logging.log4j.Log4jAgent.getConfigurationInfo;
 import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
 import static org.apache.geode.test.util.ResourceUtils.getResource;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -36,19 +35,16 @@ import org.junit.contrib.java.lang.system.SystemErrRule;
 import org.junit.contrib.java.lang.system.SystemOutRule;
 import org.junit.experimental.categories.Category;
 import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
 
 import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.test.junit.categories.LoggingTest;
 
 /**
- * Integration tests for {@link LogService} with custom logging configuration.
+ * Integration tests with custom log4j2 configuration.
  */
 @Category(LoggingTest.class)
-public class LogServiceWithCustomLogConfigIntegrationTest {
+public class CustomConfigWithLogServiceIntegrationTest {
 
-  private static final String CONFIG_FILE_NAME =
-      "LogServiceWithCustomLogConfigIntegrationTest_log4j2.xml";
   private static final String CONFIG_LAYOUT_PREFIX = "CUSTOM";
   private static final String CUSTOM_REGEX_STRING =
       "CUSTOM: level=[A-Z]+ time=\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3} [^ ]{3} message=.*[\\n]+throwable=.*$";
@@ -72,29 +68,27 @@ public class LogServiceWithCustomLogConfigIntegrationTest {
   @Rule
   public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
 
-  @Rule
-  public TestName testName = new TestName();
-
   @BeforeClass
   public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
+    String configFileName =
+        CustomConfigWithCacheIntegrationTest.class.getSimpleName() + "_log4j2.xml";
+    URL resource = getResource(configFileName);
+    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), configFileName)
         .getAbsolutePath();
   }
 
   @Before
   public void setUp() throws Exception {
-    systemOutRule.clearLog();
-    systemErrRule.clearLog();
-
     logger = LogService.getLogger();
-    logMessage = "Logging in " + testName.getMethodName();
+    logMessage = "this is a log statement";
+
+    assertThat(LogService.isUsingGemFireDefaultConfig()).as(LogService.getConfigurationInfo())
+        .isFalse();
+
     listAppender = loggerContextRule.getListAppender("CUSTOM");
-  }
 
-  @Test
-  public void isUsingGemFireDefaultConfigIsFalse() {
-    assertThat(Log4jAgent.isUsingGemFireDefaultConfig()).as(getConfigurationInfo()).isFalse();
+    systemOutRule.clearLog();
+    systemErrRule.clearLog();
   }
 
   @Test
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java
deleted file mode 100644
index 28133f8..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/DistributedSystemWithBothLogWriterAppendersIntegrationTest.java
+++ /dev/null
@@ -1,203 +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.log4j;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
-import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_LOG_FILE;
-import static org.apache.geode.internal.logging.Configuration.SECURITY_LOGGER_NAME;
-import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
-import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
-import static org.apache.geode.test.util.ResourceUtils.getResource;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Properties;
-
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-import org.apache.geode.LogWriter;
-import org.apache.geode.distributed.ConfigurationProperties;
-import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.assertj.LogFileAssert;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for logging of main and security {@code Logger}s and {@link LogWriter}s to
- * {@link ConfigurationProperties#LOG_FILE} and {@link ConfigurationProperties#SECURITY_LOG_FILE}
- * with {@link DistributedSystem}.
- */
-@Category(LoggingTest.class)
-public class DistributedSystemWithBothLogWriterAppendersIntegrationTest {
-
-  private static final String CONFIG_FILE_NAME =
-      "DistributedSystemWithBothLogWriterAppendersIntegrationTest_log4j2.xml";
-
-  private static String configFilePath;
-
-  private File mainLogFile;
-  private File securityLogFile;
-  private InternalDistributedSystem system;
-  private Logger mainLogger;
-  private Logger securityLogger;
-  private LogWriter mainLogWriter;
-  private LogWriter securityLogWriter;
-  private String logMessage;
-
-  @ClassRule
-  public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @BeforeClass
-  public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
-        .getAbsolutePath();
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    String name = testName.getMethodName();
-    mainLogFile = new File(temporaryFolder.getRoot(), name + "-main.log");
-    securityLogFile = new File(temporaryFolder.getRoot(), name + "-security.log");
-
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-    config.setProperty(LOG_FILE, mainLogFile.getAbsolutePath());
-    config.setProperty(SECURITY_LOG_FILE, securityLogFile.getAbsolutePath());
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    mainLogger = LogService.getLogger();
-    securityLogger = LogService.getLogger(SECURITY_LOGGER_NAME);
-
-    mainLogWriter = system.getLogWriter();
-    securityLogWriter = system.getSecurityLogWriter();
-
-    mainLogger.info("Starting {}", getClass().getName());
-    securityLogger.info("Starting {}", getClass().getName());
-
-    await().until(() -> mainLogFile.exists());
-    await().until(() -> securityLogFile.exists());
-
-    logMessage = "Logging " + testName.getMethodName();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    system.disconnect();
-  }
-
-  @Test
-  public void mainLogger_debug_notLoggedByDefault() {
-    mainLogger.debug(logMessage);
-
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void mainLogger_logsTo_mainLogFile() {
-    mainLogger.info(logMessage);
-
-    LogFileAssert.assertThat(mainLogFile).contains(logMessage);
-  }
-
-  @Test
-  public void mainLogger_doesNotLogTo_securityLogFile() {
-    mainLogger.info(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void securityLogger_debug_notLoggedByDefault() {
-    securityLogger.debug(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void securityLogger_logsTo_securityLogFile() {
-    securityLogger.info(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).contains(logMessage);
-  }
-
-  @Test
-  public void securityLogger_doesNotLogTo_mainLogFile() {
-    securityLogger.info(logMessage);
-
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void mainLogWriter_fine_notLoggedByDefault() {
-    mainLogWriter.fine(logMessage);
-
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void mainLogWriter_logsTo_mainLogFile() {
-    mainLogWriter.info(logMessage);
-
-    LogFileAssert.assertThat(mainLogFile).contains(logMessage);
-  }
-
-  @Test
-  public void mainLogWriter_doesNotLogTo_securityLogFile() {
-    mainLogWriter.info(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void securityLogWriter_fine_notLoggedByDefault() {
-    securityLogWriter.fine(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).doesNotContain(logMessage);
-  }
-
-  @Test
-  public void securityLogWriter_logsTo_securityLogFile() {
-    securityLogWriter.info(logMessage);
-
-    LogFileAssert.assertThat(securityLogFile).contains(logMessage);
-  }
-
-  @Test
-  public void securityLogWriter_doesNotLogTo_mainLogFile() {
-    securityLogWriter.info(logMessage);
-
-    LogFileAssert.assertThat(mainLogFile).doesNotContain(logMessage);
-  }
-}
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/DistributedSystemWithLogLevelChangesIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/DistributedSystemWithLogLevelChangesIntegrationTest.java
deleted file mode 100644
index cdd7071..0000000
--- a/geode-core/src/integrationTest/java/org/apache/geode/internal/logging/log4j/DistributedSystemWithLogLevelChangesIntegrationTest.java
+++ /dev/null
@@ -1,207 +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.log4j;
-
-import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
-import static org.apache.geode.internal.logging.Configuration.DEFAULT_LOGWRITER_LEVEL;
-import static org.apache.geode.internal.logging.Configuration.LOG_LEVEL_UPDATE_OCCURS_PROPERTY;
-import static org.apache.geode.internal.logging.InternalLogWriter.FINE_LEVEL;
-import static org.apache.geode.internal.logging.InternalLogWriter.WARNING_LEVEL;
-import static org.apache.geode.test.util.ResourceUtils.createFileFromResource;
-import static org.apache.geode.test.util.ResourceUtils.getResource;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.fail;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.contrib.java.lang.system.RestoreSystemProperties;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TemporaryFolder;
-import org.junit.rules.TestName;
-
-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.Configuration.LogLevelUpdateOccurs;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.test.junit.categories.LoggingTest;
-
-/**
- * Integration tests for {@link DistributedSystem} and log level changes with
- * {@link GeodeConsoleAppender}.
- */
-@Category(LoggingTest.class)
-public class DistributedSystemWithLogLevelChangesIntegrationTest {
-
-  private static final String CONFIG_FILE_NAME =
-      "DistributedSystemWithLogLevelChangesIntegrationTest_log4j2.xml";
-  private static final String APPENDER_NAME = "STDOUT";
-  private static final String APPLICATION_LOGGER_NAME = "com.company.application";
-
-  private static String configFilePath;
-
-  private InternalDistributedSystem system;
-  private DistributionConfig distributionConfig;
-  private Logger geodeLogger;
-  private Logger applicationLogger;
-  private String logMessage;
-  private GeodeConsoleAppender geodeConsoleAppender;
-
-  @ClassRule
-  public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
-  @Rule
-  public LoggerContextRule loggerContextRule = new LoggerContextRule(configFilePath);
-
-  @Rule
-  public RestoreSystemProperties restoreSystemProperties = new RestoreSystemProperties();
-
-  @Rule
-  public TestName testName = new TestName();
-
-  @BeforeClass
-  public static void setUpLogConfigFile() throws Exception {
-    URL resource = getResource(CONFIG_FILE_NAME);
-    configFilePath = createFileFromResource(resource, temporaryFolder.getRoot(), CONFIG_FILE_NAME)
-        .getAbsolutePath();
-  }
-
-  @Before
-  public void setUp() throws Exception {
-    System.setProperty(LOG_LEVEL_UPDATE_OCCURS_PROPERTY, LogLevelUpdateOccurs.ALWAYS.name());
-
-    Properties config = new Properties();
-    config.setProperty(LOCATORS, "");
-
-    system = (InternalDistributedSystem) DistributedSystem.connect(config);
-
-    distributionConfig = system.getConfig();
-    geodeLogger = LogService.getLogger();
-    applicationLogger = LogService.getLogger(APPLICATION_LOGGER_NAME);
-    logMessage = "Logging in " + testName.getMethodName();
-    geodeConsoleAppender =
-        loggerContextRule.getAppender(APPENDER_NAME, GeodeConsoleAppender.class);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    system.disconnect();
-    geodeConsoleAppender.clearLogEvents();
-  }
-
-  @Test
-  public void debugNotLoggedByDefault() {
-    geodeLogger.debug(logMessage);
-
-    assertThatLogEventsDoesNotContain(logMessage, getClass().getName(), Level.DEBUG);
-  }
-
-  @Test
-  public void debugLoggedAfterLoweringLogLevelToFine() {
-    distributionConfig.setLogLevel(FINE_LEVEL);
-
-    geodeLogger.debug(logMessage);
-
-    assertThatLogEventsContains(logMessage, geodeLogger.getName(), Level.DEBUG);
-  }
-
-  @Test
-  public void debugNotLoggedAfterRestoringLogLevelToDefault() {
-    distributionConfig.setLogLevel(FINE_LEVEL);
-
-    system.getConfig().setLogLevel(DEFAULT_LOGWRITER_LEVEL);
-    geodeLogger.debug(logMessage);
-
-    assertThatLogEventsDoesNotContain(logMessage, geodeLogger.getName(), Level.DEBUG);
-  }
-
-  @Test
-  public void applicationLoggerInfoLoggedByDefault() {
-    applicationLogger.info(logMessage);
-
-    assertThatLogEventsContains(logMessage, applicationLogger.getName(), Level.INFO);
-  }
-
-  @Test
-  public void applicationLoggerBelowLevelUnaffectedByLoweringLogLevelChanges() {
-    distributionConfig.setLogLevel(FINE_LEVEL);
-
-    applicationLogger.debug(logMessage);
-
-    assertThatLogEventsDoesNotContain(logMessage, applicationLogger.getName(), Level.DEBUG);
-  }
-
-  @Test
-  public void applicationLoggerAboveLevelUnaffectedByLoweringLogLevelChanges() {
-    distributionConfig.setLogLevel(FINE_LEVEL);
-
-    applicationLogger.info(logMessage);
-
-    assertThatLogEventsContains(logMessage, applicationLogger.getName(), Level.INFO);
-  }
-
-  @Test
-  public void applicationLoggerAboveLevelUnaffectedByRaisingLogLevelChanges() {
-    distributionConfig.setLogLevel(WARNING_LEVEL);
-
-    applicationLogger.info(logMessage);
-
-    assertThatLogEventsContains(logMessage, applicationLogger.getName(), Level.INFO);
-  }
-
-  @Test
-  public void infoStatementNotLoggedAfterRaisingLogLevelToWarning() {
-    distributionConfig.setLogLevel(WARNING_LEVEL);
-
-    geodeLogger.info(logMessage);
-
-    assertThatLogEventsDoesNotContain(logMessage, geodeLogger.getName(), Level.INFO);
... 18467 lines suppressed ...