Hello, The Gradle dependency management team developed a plugin [1] in parallel to writing a blog post on the Gradle blog [2] that shows how Gradle can help detect invalid logging setup at build time using Gradle’s new capabilities concept [3]. Feature wise, the plugin can detect invalid setups involving Slf4J and Log4J 2. In addition, it offers configuration options to enforce a selected logging solution if conflicts are detected.
If you use Gradle, take a look at the plugin as it will protect against invalid setups out of the box. Please report issues or feature ideas on GitHub [4]. The capabilities-based conflict detection in Gradle could also work without plugins, if logging libraries such as Log4J 2 would publish enough information in their metadata, which is now possible using the new Gradle Module Metadata format (in addition to POM) [5]. We, at Gradle, would be very happy to discuss, and help with, publishing this information for upcoming Log4J 2 releases. Would there be an interest there (asking Log4J 2 maintainers)? Regards, Louis for the Gradle Dependency Management team [1] https://plugins.gradle.org/plugin/dev.jacomet.logging-capabilities [2] https://blog.gradle.org/addressing-logging-complexity-capabilities [3] https://docs.gradle.org/6.0.1/userguide/component_capabilities.html [4] https://github.com/ljacomet/logging-capabilities [5] https://docs.gradle.org/current/userguide/publishing_gradle_module_metadata.html