It's similar to https://github.com/spring-projects/spring-framework/issues/23655
Open Liberty will load class org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter
before starting of application, it trigger log4j2 initialization before web application initialization, system property lookup will not using value set at WebApplicationInitializer::onStartup
.
here is stack trace:
[err] at org.apache.logging.log4j.core.lookup.SystemPropertiesLookup.lookup(SystemPropertiesLookup.java:45)
[err] at org.apache.logging.log4j.core.lookup.AbstractLookup.lookup(AbstractLookup.java:33)
[err] at org.apache.logging.log4j.core.lookup.Interpolator.lookup(Interpolator.java:198)
[err] at org.apache.logging.log4j.core.lookup.StrSubstitutor.resolveVariable(StrSubstitutor.java:1060)
[err] at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:982)
[err] at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:878)
[err] at org.apache.logging.log4j.core.lookup.StrSubstitutor.replace(StrSubstitutor.java:433)
[err] at org.apache.logging.log4j.core.config.plugins.visitors.PluginBuilderAttributeVisitor.visit(PluginBuilderAttributeVisitor.java:49)
[err] at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.injectFields(PluginBuilder.java:185)
[err] at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:121)
[err] at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
[err] at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
[err] at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
[err] at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
[err] at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
[err] at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
[err] at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:579)
[err] at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:651)
[err] at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:668)
[err] at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
[err] at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
[err] at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
[err] at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
[err] at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:138)
[err] at org.apache.logging.log4j.jcl.LogAdapter.getContext(LogAdapter.java:39)
[err] at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48)
[err] at org.apache.logging.log4j.jcl.LogFactoryImpl.getInstance(LogFactoryImpl.java:40)
[err] at org.apache.logging.log4j.jcl.LogFactoryImpl.getInstance(LogFactoryImpl.java:55)
[err] at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655)
[err] at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.<clinit>(StandardWebSocketHandlerAdapter.java:45)
[err] at java.lang.Class.forName0(Native Method)
[err] at java.lang.Class.forName(Class.java:348)
[err] at com.ibm.ws.webcontainer.osgi.webapp.WebApp.addClassToHandlesTypesStartupSet(WebApp.java:1093)
[err] at [internal classes]
[err] at com.ibm.ws.webcontainer.osgi.WebContainer.access$000(WebContainer.java:110)
[err] at com.ibm.ws.webcontainer.osgi.WebContainer$2.run(WebContainer.java:951)
Comment From: quaff
Superseded by https://github.com/spring-projects/spring-framework/pull/25428
Comment From: jhoeller
Reopening it for a change towards a non-static logger field, as suggested on the PR.