diff --git a/src/main/java/org/zeroturnaround/exec/stream/StreamPumper.java b/src/main/java/org/zeroturnaround/exec/stream/StreamPumper.java index 41bb905..9183f10 100644 --- a/src/main/java/org/zeroturnaround/exec/stream/StreamPumper.java +++ b/src/main/java/org/zeroturnaround/exec/stream/StreamPumper.java @@ -40,9 +40,11 @@ package org.zeroturnaround.exec.stream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.slf4j.MDC; /** * Copies all data from an input stream to an output stream. @@ -72,6 +74,10 @@ public class StreamPumper implements Runnable { /** flush the output stream after each write */ private final boolean flushImmediately; + /** Carries the MDC logging context of the parent thread if it exists */ + private final Map mdcContext = MDC.getCopyOfContextMap(); + + /** * Create a new stream pumper. * @@ -155,6 +161,9 @@ public class StreamPumper implements Runnable { * soon as the input stream is closed or an error occurs. */ public void run() { + if (this.mdcContext != null) { + MDC.setContextMap(this.mdcContext); + } log.trace("{} started.", this); synchronized (this) { // Just in case this object is reused in the future