diff --git a/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/AbstractLoggingIntegrationTests.java b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/AbstractLoggingIntegrationTests.java
new file mode 100644
index 00000000..9bf6b739
--- /dev/null
+++ b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/AbstractLoggingIntegrationTests.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2019 the original author or authors.
+ *
+ * Licensed 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
+ *
+ * https://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.springframework.geode.logging.slf4j.logback;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newIllegalStateException;
+
+import java.util.Optional;
+
+import org.junit.After;
+import org.junit.Before;
+
+import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport;
+import org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender;
+
+import org.slf4j.ILoggerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.util.ContextInitializer;
+import ch.qos.logback.core.Appender;
+
+/**
+ * Abstract base class for testing the spring-geode-starter-logging and spring-gemfire-starter modules.
+ *
+ * @author John Blum
+ * @see org.slf4j.Logger
+ * @see org.slf4j.LoggerFactory
+ * @see org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport
+ * @see org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender
+ * @see ch.qos.logback.classic.Level
+ * @see ch.qos.logback.classic.LoggerContext
+ * @see ch.qos.logback.classic.util.ContextInitializer
+ * @see ch.qos.logback.core.Appender
+ * @since 1.3.0
+ */
+public abstract class AbstractLoggingIntegrationTests extends IntegrationTestsSupport {
+
+ protected static final String APACHE_GEODE_LOGGER_NAME = "org.apache.geode";
+ protected static final String SPRING_BOOT_DATA_GEMFIRE_LOG_LEVEL_PROPERTY = "spring.boot.data.gemfire.log.level";
+
+ private Logger apacheGeodeLogger = LoggerFactory.getLogger(APACHE_GEODE_LOGGER_NAME);
+
+ private TestAppender testAppender;
+
+ protected TestAppender getTestAppender() {
+
+ assertThat(this.testAppender).describedAs("TestAppender could not be resolved").isNotNull();
+
+ return this.testAppender;
+ }
+
+ protected Level getTestLogLevel() {
+ return Level.INFO;
+ }
+
+ public void assertApacheGeodeLoggerLogLevel(Level logLevel) {
+
+ Optional.ofNullable(this.apacheGeodeLogger)
+ .filter(ch.qos.logback.classic.Logger.class::isInstance)
+ .map(ch.qos.logback.classic.Logger.class::cast)
+ .map(logger -> {
+ assertThat(logger.getLevel()).isEqualTo(logLevel);
+ return logger;
+ })
+ .orElseThrow(() -> newIllegalStateException("'org.apache.geode' Logger not found"));
+ }
+
+ @Before
+ public void setup() {
+
+ configureLogging();
+ configureRootLoggerDelegatingAppender();
+ logMessages();
+ }
+
+ private void configureLogging() {
+
+ System.setProperty(SPRING_BOOT_DATA_GEMFIRE_LOG_LEVEL_PROPERTY, getTestLogLevel().toString());
+
+ ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
+
+ assertThat(loggerFactory).isInstanceOf(LoggerContext.class);
+
+ LoggerContext loggerContext = (LoggerContext) loggerFactory;
+
+ try {
+ new ContextInitializer(loggerContext).autoConfig();
+ }
+ catch (Exception cause) {
+ throw newIllegalStateException("Failed to initialize and configure SLF4J/Logback logging context", cause);
+ }
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ private void configureRootLoggerDelegatingAppender() {
+
+ Logger rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
+
+ assertThat(rootLogger).isInstanceOf(ch.qos.logback.classic.Logger.class);
+
+ ch.qos.logback.classic.Logger logbackRootLogger = (ch.qos.logback.classic.Logger) rootLogger;
+
+ Appender> delegateAppender = logbackRootLogger.getAppender("delegate");
+
+ assertThat(delegateAppender).isNotNull();
+ assertThat(delegateAppender.getName()).isEqualTo("delegate");
+
+ this.testAppender = new TestAppender();
+ this.testAppender.start();
+
+ ((DelegatingAppender) delegateAppender).setAppender(this.testAppender);
+
+ assertThat(((DelegatingAppender) delegateAppender).getAppender()).isSameAs(this.testAppender);
+ }
+
+ public void logMessages() {
+
+ assertThat(this.apacheGeodeLogger).isNotNull();
+
+ this.apacheGeodeLogger.debug("DEBUG TEST");
+ this.apacheGeodeLogger.info("INFO TEST");
+ this.apacheGeodeLogger.error("ERROR TEST");
+ }
+
+ @After
+ public void tearDown() {
+
+ Optional.ofNullable(this.testAppender).ifPresent(TestAppender::clear);
+ System.clearProperty(SPRING_BOOT_DATA_GEMFIRE_LOG_LEVEL_PROPERTY);
+ }
+}
diff --git a/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/DebugLoggingIntegrationTests.java b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/DebugLoggingIntegrationTests.java
new file mode 100644
index 00000000..8adc57da
--- /dev/null
+++ b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/DebugLoggingIntegrationTests.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2019 the original author or authors.
+ *
+ * Licensed 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
+ *
+ * https://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.springframework.geode.logging.slf4j.logback;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+
+import org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender;
+
+import ch.qos.logback.classic.Level;
+
+/**
+ * Integration Tests testing the {@literal org.apache.geode} {@link org.slf4j.Logger}
+ * with log level {@link Level#DEBUG}.
+ *
+ *
+ * -Dspring.boot.data.gemfire.log.level=DEBUG
+ *
+ *
+ * @author John Blum
+ * @see org.junit.Test
+ * @see org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender
+ * @see org.springframework.geode.logging.slf4j.logback.AbstractLoggingIntegrationTests
+ * @see ch.qos.logback.classic.Level#DEBUG
+ * @since 1.3.0
+ */
+public class DebugLoggingIntegrationTests extends AbstractLoggingIntegrationTests {
+
+ @Override
+ protected Level getTestLogLevel() {
+ return Level.DEBUG;
+ }
+
+ @Test
+ public void logLevelIsSetToDebug() {
+ assertApacheGeodeLoggerLogLevel(Level.DEBUG);
+ }
+
+ @Test
+ public void logMessagesAtDebug() {
+
+ TestAppender testAppender = getTestAppender();
+
+ assertThat(testAppender.lastLogMessage()).isEqualTo("ERROR TEST");
+ assertThat(testAppender.lastLogMessage()).isEqualTo("INFO TEST");
+ assertThat(testAppender.lastLogMessage()).isEqualTo("DEBUG TEST");
+ assertThat(testAppender.lastLogMessage()).isNull();
+ }
+}
diff --git a/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/InfoLoggingIntegrationTests.java b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/InfoLoggingIntegrationTests.java
new file mode 100644
index 00000000..327fbab1
--- /dev/null
+++ b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/InfoLoggingIntegrationTests.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2019 the original author or authors.
+ *
+ * Licensed 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
+ *
+ * https://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.springframework.geode.logging.slf4j.logback;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+
+import org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender;
+
+import ch.qos.logback.classic.Level;
+
+/**
+ * Integration Tests testing the {@literal org.apache.geode} {@link org.slf4j.Logger}
+ * with the default log level {@link Level#INFO}.
+ *
+ * @author John Blum
+ * @see org.junit.Test
+ * @see org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender
+ * @see org.springframework.geode.logging.slf4j.logback.AbstractLoggingIntegrationTests
+ * @see ch.qos.logback.classic.Level#INFO
+ * @since 1.3.0
+ */
+public class InfoLoggingIntegrationTests extends AbstractLoggingIntegrationTests {
+
+ @Test
+ public void logLevelIsSetToInfo() {
+ assertApacheGeodeLoggerLogLevel(Level.INFO);
+ }
+
+ @Test
+ public void logsMessagesAtInfo() {
+
+ TestAppender testAppender = getTestAppender();
+
+ assertThat(testAppender.lastLogMessage()).isEqualTo("ERROR TEST");
+ assertThat(testAppender.lastLogMessage()).isEqualTo("INFO TEST");
+ assertThat(testAppender.lastLogMessage()).isNull();
+ }
+}
diff --git a/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/NoLoggingIntegrationTests.java b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/NoLoggingIntegrationTests.java
new file mode 100644
index 00000000..30939abd
--- /dev/null
+++ b/spring-geode-starter-logging/src/test/java/org/springframework/geode/logging/slf4j/logback/NoLoggingIntegrationTests.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2019 the original author or authors.
+ *
+ * Licensed 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
+ *
+ * https://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.springframework.geode.logging.slf4j.logback;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
+
+import org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender;
+
+import ch.qos.logback.classic.Level;
+
+/**
+ * Integration Tests testing the {@literal org.apache.geode} {@link org.slf4j.Logger}
+ * with no logging enabled, i.e. {@link Level#OFF}.
+ *
+ *
+ * -Dspring.boot.data.gemfire.log.level=DEBUG
+ *
+ *
+ * @author John Blum
+ * @see org.junit.Test
+ * @see org.springframework.data.gemfire.tests.logging.slf4j.logback.TestAppender
+ * @see org.springframework.geode.logging.slf4j.logback.AbstractLoggingIntegrationTests
+ * @see ch.qos.logback.classic.Level#OFF
+ * @since 1.3.0
+ */
+public class NoLoggingIntegrationTests extends AbstractLoggingIntegrationTests {
+
+ @Override
+ protected Level getTestLogLevel() {
+ return Level.OFF;
+ }
+
+ @Test
+ public void logLevelIsSetToOff() {
+ assertApacheGeodeLoggerLogLevel(Level.OFF);
+ }
+
+ @Test
+ public void logsNoMessages() {
+
+ TestAppender testAppender = getTestAppender();
+
+ assertThat(testAppender.lastLogMessage()).isNull();
+ }
+}
diff --git a/spring-geode-starter-logging/src/test/resources/logback-test.xml b/spring-geode-starter-logging/src/test/resources/logback-test.xml
new file mode 100644
index 00000000..ab9acc27
--- /dev/null
+++ b/spring-geode-starter-logging/src/test/resources/logback-test.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+