Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Not A Problem
-
2.12.1, 2.13.0
-
None
-
None
-
openjdk version 11.0.6; Apache Maven 3.6.3; Ubuntu 19.10
Description
Sample project to ease reproduction : https://github.com/skyghis/testLog4j2
I try to load configuration from an external file on a fat jar.
I tried to load configuration from multiples methods without success.
I kept two methods on my sample:
if (!Files.isReadable(log4jConfiguration)) { throw new IllegalStateException(); } LOGGER.info("startup"); LOGGER.debug("startup"); // Not logged = OK // First try to load configuration Configurator.initialize(null, log4jConfiguration.toString()); LOGGER.debug("with init"); // Should be logged // Second try to load configuration // From log4j FAQ : https://logging.apache.org/log4j/2.x/faq.html#reconfig_from_code final LoggerContext context = (LoggerContext) LogManager.getContext(false); context.setConfigLocation(log4jConfiguration.toUri()); LOGGER.debug("reconfig from code"); // Should be logged LOGGER.info("shutdown"); // Should be logged with [OUTER] prefix
The code works when running from IDE, but when executed with java -jar the external configuration is not loaded.
Result when running from IDE:
Result when running from jar:
I expect to have the configuration file loaded when running my jar file like when running from IDE.
Edit:
If I compile and execute the same code with java 8, the code works as expected :
So the issue seem specific to Java11.