Open
Description
Description
Hi all, I just stumbled on an interesting behavior mixing ContextDataProvider
and ThreadContext
.
In short, my application is using a dependency that provides a custom ContextDataProvider
through SPI, but in my application code I also use ThreadContext
.
When bundling using the gradle shadowJar plugin, I didn't configured the plugin to merge the SPI files, thus only the custom ContextDataProvider
was loaded in the uber JAR, and not the built-in ThreadContextDataProvider
.
Although it makes sense from the ServiceLoader
POV, I wonder if something can be done to make this behavior less subtle, some ideas:
- log4j2 could still mount the
ThreadContextDataProvider
, even though is not registered through SPI - log4j2 could print a warning when using
ThreadContext
but noThreadContextDataProvider
was loaded - Perhaps adding some documentation here helps as well https://logging.apache.org/log4j/2.x/manual/extending.html#custom-contextdataprovider , although for the final users that are mixing libraries, this might not be obvious anyway
Configuration
Version: 2.22.0
Operating system: Linux
JDK: 21
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
To triage