Create support for log4j2 MDC when used with Kotlin coroutines. Since coroutines do not guarantee which underlying thread is executing code after a continuation, a standard ThreadLocal is not sufficient to keep the MDC context.
Kotlin coroutines have a mechanism by which "coroutine local" data can be stored. See the reference implementation for SLF4J here:
We should implement an optional native module to add support for log4j2 MDC using the same pattern, that does not require having SLF4J and the slf4j-log4j2 implementation on the classpath.