diff options
Diffstat (limited to 'src/main/scala/xyz/driver/core/database')
-rw-r--r-- | src/main/scala/xyz/driver/core/database/MdcAsyncExecutor.scala | 9 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/database/MdcExecutionContext.scala | 28 |
2 files changed, 8 insertions, 29 deletions
diff --git a/src/main/scala/xyz/driver/core/database/MdcAsyncExecutor.scala b/src/main/scala/xyz/driver/core/database/MdcAsyncExecutor.scala index ac8456e..5939efb 100644 --- a/src/main/scala/xyz/driver/core/database/MdcAsyncExecutor.scala +++ b/src/main/scala/xyz/driver/core/database/MdcAsyncExecutor.scala @@ -1,4 +1,9 @@ -package xyz.driver.core.database +/** Code ported from "de.geekonaut" %% "slickmdc" % "1.0.0" + * License: @see https://github.com/AVGP/slickmdc/blob/master/LICENSE + * Blog post: @see http://50linesofco.de/post/2016-07-01-slick-and-slf4j-mdc-logging-in-scala.html + */ +package xyz.driver.core +package database import java.util.concurrent._ import java.util.concurrent.atomic.AtomicInteger @@ -7,6 +12,8 @@ import scala.concurrent._ import com.typesafe.scalalogging.StrictLogging import slick.util.AsyncExecutor +import logging.MdcExecutionContext + /** Taken from the original Slick AsyncExecutor and simplified * @see https://github.com/slick/slick/blob/3.1/slick/src/main/scala/slick/util/AsyncExecutor.scala */ diff --git a/src/main/scala/xyz/driver/core/database/MdcExecutionContext.scala b/src/main/scala/xyz/driver/core/database/MdcExecutionContext.scala deleted file mode 100644 index f08f16c..0000000 --- a/src/main/scala/xyz/driver/core/database/MdcExecutionContext.scala +++ /dev/null @@ -1,28 +0,0 @@ -package xyz.driver.core.database - -import org.slf4j.MDC -import scala.concurrent.ExecutionContext - -/** - * Execution context proxy for propagating SLF4J diagnostic context from caller thread to execution thread. - */ -class MdcExecutionContext(executionContext: ExecutionContext) extends ExecutionContext { - override def execute(runnable: Runnable): Unit = { - val callerMdc = MDC.getCopyOfContextMap - executionContext.execute(new Runnable { - def run(): Unit = { - // copy caller thread diagnostic context to execution thread - // scalastyle:off - if (callerMdc != null) MDC.setContextMap(callerMdc) - try { - runnable.run() - } finally { - // the thread might be reused, so we clean up for the next use - MDC.clear() - } - } - }) - } - - override def reportFailure(cause: Throwable): Unit = executionContext.reportFailure(cause) -} |