Open ayush11-96 opened 2 weeks ago
@ayush11-96,
Does the problem also occur with version 2.24.1
?
Can you provide the full stack trace of the exception?
@ppkarwasz I tried till 2.23.1 version and this is still happening Stack Trace:
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because the return value of "org.apache.logging.log4j.core.config.LoggerConfig.getAppenderRefs()" is null
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:740) ~[log4j-core-2.23.1.jar:2.23.1]
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:264) ~[log4j-core-2.23.1.jar:2.23.1]
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:313) ~[log4j-core-2.23.1.jar:2.23.1]
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:631) ~[log4j-core-2.23.1.jar:2.23.1]
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:292) ~[log4j-core-2.23.1.jar:2.23.1]
@ppkarwasz could u please elaborate the issue if u got that?
@ayush11-96,
There is problem in your configuration: you both use the shorthand rootLogger = <level>, <ref1>, <ref2>
notation that was introduced in Log4j Core 2.17.2 IIRC (see Properties configuration quirks for more information) and the normal rootLogger.appenderRef.<n>.ref
properties.
You should either use the long notation:
rootLogger.level = INFO
rootLogger.appenderRef.0.ref = console
or the shorthand notation (which only exists in the Java properties format):
rootLogger = INFO, console
The NPE is due to the fact that the current code does not handle the case, when the shorthand notation is used and no appender reference is provided (rootLogger = INFO
). We will fix this in the next release.
Thanks @ppkarwasz Can I expect any ETA for the new version with fix?
Thanks @ppkarwasz Can I expect any ETA for the new version with fix?
This bug only affects very unlikely configuration scenario, when a user does not want any appenders for the root logger. It is not a priority.
Your configuration triggered the bug, because you have a typo in your configuration: replace rootLogger = INFO
with rootLogger.level = INFO
and everything will work. See my comment above for two variants of a working configuration.
thanks @ppkarwasz
I keep this open, so we can fix the NPE in the rare case a user really does not want any appenders attached to the root logger.
Currently we are using log4j2 version 2.17.0 with spring boot but while updating log4j2 to 2.17.2 we are getting below error and which is because of the appender of root is initialise to null
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because the return value of "org.apache.logging.log4j.core.config.LoggerConfig.getAppenderRefs()" is null
We are passing below properties:
Please help us to understand if we require some changes along with version upgrade?