Hi Amanda,

On Mon, 5 Aug 2024 at 17:35, Amanda Liu <as...@terpmail.umd.edu> wrote:
> Thanks for your response! I am using SBT build tool, and the JDK version is 
> 17. And yes, I do see a `Log4jPlugins.dat` file in my JAR. I see some 
> `log4j.core.appender` objects are included in this .dat file, however my new 
> custom appender I added is not there.

You must be packaging your application as an Uber JAR / Fat JAR, so
the contents of your application and all its dependencies end up in a
flat JAR.

Shading causes problems when multiple JARs contain the same file. When
such a situation occurs, you must apply some strategy to merge these
files. The files that might require merging in an application that
uses Log4j 2 Core are:

1. The `META-INF/MANIFEST.MF` of the Uber JAR must contain the
attribute `Multi-Release: true`,
2. The contents of all `META-INF/services/<something>` service files
must be concatenated to obtain a merged
`META-INF/services/<something>` file,
3. Multiple 
`META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat`
files must be merged together using a specific algorithm. We do
publish a Maven Shade resource transformer to merge these files [1]
and the same functionality is offered by a Gradle Plugin [2]. I am not
aware however of any sbt plugins that do it.

To solve the problem with the merging of `Log4j2Plugins.dat`, you can
upgrade to version `3.x`, which uses a service file for the same
purpose.

Could you provide a minimal reproducible sbt example that reproduces
the issue you are having?

Piotr

[1] 
https://logging.apache.org/log4j/transform/latest/#maven-shade-plugin-extensions
[2] 
https://github.com/GradleUp/shadow/blob/main/src/main/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/Log4j2PluginsCacheFileTransformer.groovy

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to