diff --git a/log-mdc-ndc/README.md b/log-mdc/README.md
similarity index 100%
rename from log-mdc-ndc/README.md
rename to log-mdc/README.md
diff --git a/log-mdc-ndc/pom.xml b/log-mdc/pom.xml
similarity index 90%
rename from log-mdc-ndc/pom.xml
rename to log-mdc/pom.xml
index 927473ad4e..a6e9414dc5 100644
--- a/log-mdc-ndc/pom.xml
+++ b/log-mdc/pom.xml
@@ -52,6 +52,14 @@
logback-classic
1.1.7
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/TransactionFactory.java b/log-mdc/src/main/java/com/baeldung/mdc/TransactionFactory.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/TransactionFactory.java
rename to log-mdc/src/main/java/com/baeldung/mdc/TransactionFactory.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/Transfer.java b/log-mdc/src/main/java/com/baeldung/mdc/Transfer.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/Transfer.java
rename to log-mdc/src/main/java/com/baeldung/mdc/Transfer.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/TransferDemo.java b/log-mdc/src/main/java/com/baeldung/mdc/TransferDemo.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/TransferDemo.java
rename to log-mdc/src/main/java/com/baeldung/mdc/TransferDemo.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/TransferService.java b/log-mdc/src/main/java/com/baeldung/mdc/TransferService.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/TransferService.java
rename to log-mdc/src/main/java/com/baeldung/mdc/TransferService.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j/Log4JRunnable.java b/log-mdc/src/main/java/com/baeldung/mdc/log4j/Log4JRunnable.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j/Log4JRunnable.java
rename to log-mdc/src/main/java/com/baeldung/mdc/log4j/Log4JRunnable.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j/Log4JTransferService.java b/log-mdc/src/main/java/com/baeldung/mdc/log4j/Log4JTransferService.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j/Log4JTransferService.java
rename to log-mdc/src/main/java/com/baeldung/mdc/log4j/Log4JTransferService.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j2/Log4J2Runnable.java b/log-mdc/src/main/java/com/baeldung/mdc/log4j2/Log4J2Runnable.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j2/Log4J2Runnable.java
rename to log-mdc/src/main/java/com/baeldung/mdc/log4j2/Log4J2Runnable.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j2/Log4J2TransferService.java b/log-mdc/src/main/java/com/baeldung/mdc/log4j2/Log4J2TransferService.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/log4j2/Log4J2TransferService.java
rename to log-mdc/src/main/java/com/baeldung/mdc/log4j2/Log4J2TransferService.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/slf4j/Slf4TransferService.java b/log-mdc/src/main/java/com/baeldung/mdc/slf4j/Slf4TransferService.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/slf4j/Slf4TransferService.java
rename to log-mdc/src/main/java/com/baeldung/mdc/slf4j/Slf4TransferService.java
diff --git a/log-mdc-ndc/src/main/java/com/baeldung/mdc/slf4j/Slf4jRunnable.java b/log-mdc/src/main/java/com/baeldung/mdc/slf4j/Slf4jRunnable.java
similarity index 100%
rename from log-mdc-ndc/src/main/java/com/baeldung/mdc/slf4j/Slf4jRunnable.java
rename to log-mdc/src/main/java/com/baeldung/mdc/slf4j/Slf4jRunnable.java
diff --git a/log-mdc-ndc/src/main/resources/log4j.properties b/log-mdc/src/main/resources/log4j.properties
similarity index 100%
rename from log-mdc-ndc/src/main/resources/log4j.properties
rename to log-mdc/src/main/resources/log4j.properties
diff --git a/log-mdc-ndc/src/main/resources/log4j2.xml b/log-mdc/src/main/resources/log4j2.xml
similarity index 100%
rename from log-mdc-ndc/src/main/resources/log4j2.xml
rename to log-mdc/src/main/resources/log4j2.xml
diff --git a/log-mdc-ndc/src/main/resources/logback.xml b/log-mdc/src/main/resources/logback.xml
similarity index 100%
rename from log-mdc-ndc/src/main/resources/logback.xml
rename to log-mdc/src/main/resources/logback.xml
diff --git a/log-mdc/src/test/java/com/baeldung/mdc/log4j/Demo.java b/log-mdc/src/test/java/com/baeldung/mdc/log4j/Demo.java
new file mode 100644
index 0000000000..f9a210606f
--- /dev/null
+++ b/log-mdc/src/test/java/com/baeldung/mdc/log4j/Demo.java
@@ -0,0 +1,26 @@
+package com.baeldung.mdc.log4j;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+
+import com.baeldung.mdc.TransactionFactory;
+import com.baeldung.mdc.Transfer;
+
+public class Demo {
+
+ @Test
+ public void main() throws InterruptedException {
+ ExecutorService executor = Executors.newFixedThreadPool(3);
+ TransactionFactory transactionFactory = new TransactionFactory();
+ for (int i = 0; i < 10; i++) {
+ Transfer tx = transactionFactory.newInstance();
+ Runnable task = new Log4JRunnable(tx);
+ executor.submit(task);
+ }
+ executor.shutdown();
+ executor.awaitTermination(60, TimeUnit.SECONDS);
+ }
+}
diff --git a/log-mdc/src/test/java/com/baeldung/mdc/log4j2/Demo.java b/log-mdc/src/test/java/com/baeldung/mdc/log4j2/Demo.java
new file mode 100644
index 0000000000..3f7c1d37d5
--- /dev/null
+++ b/log-mdc/src/test/java/com/baeldung/mdc/log4j2/Demo.java
@@ -0,0 +1,30 @@
+package com.baeldung.mdc.log4j2;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+import com.baeldung.mdc.TransactionFactory;
+import com.baeldung.mdc.Transfer;
+import com.baeldung.mdc.log4j.Log4JRunnable;
+import com.baeldung.mdc.log4j2.Log4J2Runnable;
+import com.baeldung.mdc.slf4j.Slf4jRunnable;
+
+public class Demo {
+
+ @Test
+ public void main() throws InterruptedException {
+ ExecutorService executor = Executors.newFixedThreadPool(3);
+ TransactionFactory transactionFactory = new TransactionFactory();
+ for (int i = 0; i < 10; i++) {
+ Transfer tx = transactionFactory.newInstance();
+ Runnable task = new Log4J2Runnable(tx);
+ executor.submit(task);
+ }
+ executor.shutdown();
+ executor.awaitTermination(60, TimeUnit.SECONDS);
+ }
+}
diff --git a/log-mdc/src/test/java/com/baeldung/mdc/slf4j/Demo.java b/log-mdc/src/test/java/com/baeldung/mdc/slf4j/Demo.java
new file mode 100644
index 0000000000..98db698f47
--- /dev/null
+++ b/log-mdc/src/test/java/com/baeldung/mdc/slf4j/Demo.java
@@ -0,0 +1,30 @@
+package com.baeldung.mdc.slf4j;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+import com.baeldung.mdc.TransactionFactory;
+import com.baeldung.mdc.Transfer;
+import com.baeldung.mdc.log4j.Log4JRunnable;
+import com.baeldung.mdc.log4j2.Log4J2Runnable;
+import com.baeldung.mdc.slf4j.Slf4jRunnable;
+
+public class Demo {
+
+ @Test
+ public void main() throws InterruptedException {
+ ExecutorService executor = Executors.newFixedThreadPool(3);
+ TransactionFactory transactionFactory = new TransactionFactory();
+ for (int i = 0; i < 10; i++) {
+ Transfer tx = transactionFactory.newInstance();
+ Runnable task = new Slf4jRunnable(tx);
+ executor.submit(task);
+ }
+ executor.shutdown();
+ executor.awaitTermination(60, TimeUnit.SECONDS);
+ }
+}