Sorry, just realized a possibly important detail. In dev envmt, I am using
slf4j-api-2.0.6.jar, in QA we are using slf4j-api-1.7.25.jar.When log4j2.debug
was enabled in previous testing, I see the following logging/notes:DEBUG
StatusLogger Building Plugin[name=logger,
class=org.apache.logging.log4j.core.config.LoggerConfig].
DEBUG StatusLogger createLogger(additivity="false", level="TRACE",
name="org.springframework", includeLocation="null", ={LogToRollingFile,
Console}, ={},
Configuration(jar:file:/C:/sw/apache-tomcat-7.0.84/webapps/base/WEB-INF/lib/base.jar!/log4j2.xml),
Filter=null)
DEBUG StatusLogger Registering MBean
org.apache.logging.log4j2:type=66fbd5ea,component=Loggers,name=org.springframework
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or
earlier.
SLF4J: Ignoring binding found at
[jar:file:/C:/sw/apache-tomcat-7.0.84/shared/log4j-slf4j-impl-2.9.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See https://www.slf4j.org/codes.html#ignoredBindings for an explanation.
I will enable same debug logging and test again. Perhaps the version of the
slf4j-api-*.jar needs to be matched/upgraded in QA envmt.The log4j*.jar files
are identical in dev and QA $CATALINA_HOME/shared dir:log4j-1.2-api-2.9.1.jar
log4j-api-2.9.1.jar
log4j-core-2.9.1.jar
log4j-jcl-2.9.1.jar
log4j-slf4j-impl-2.9.1.jar
log4j-web-2.9.1.jar
Arbi Sookazian | Sr Software Engineer | Medata, Inc.
5 Peters Canyon Road, Suite 250
Irvine, CA 92606
[email protected] | www.medata.com
----- Original Message -----
From: Arbi Sookazian <[email protected]>
To: [email protected]
Sent: Tue, 29 Apr 2025 08:22:12 -0700 (PDT)
Subject: Unable to config/init logging separation for web app on Tomcat 7.0.82
body {height: 100%; color:#000000; font-size:12pt;
font-family:arial,helvetica,sans-serif;}Hi,
I have been able to successfully configure and log separately for multiple web
apps deployed to same Tomcat 7.0.84 container in dev environment (Windows 11 w/
cygwin). Now trying to do the same testing in QA environment with Tomcat
7.0.82 (Linux) and having issue below at startup. I doubt it has anything to
do with differing OS.
Please advise what is wrong or is it possibly a JAR mismatch in
$CATALINA_HOME/shared dir wrt log4j-*.jar files or slf4j-*.jar files between
the two environments. log4j-web-2.9.1.jar is in shared dir. Thanks.
INFO: Deploying web application directory
/opt/apache/testing-apache-tomcat-7.0.82/webapps/testing2DEBUG StatusLogger
Log4jServletContextListener ensuring that Log4j starts up properly.
DEBUG StatusLogger getConfigURI found resource
[jndi:/localhost/testing2/WEB-INF/classes/log4j2.xml] in servletContext at
[./WEB-INF/classes/log4j2.xml]
WARN StatusLogger Potential problem: Selector is not an instance of
NamedContextSelector.
We have double checked the configs in web.xml and the log4j2.xml as well as
log4j2.component.properties. Everything looks correct/expected in the QA setup.
Contents of log4j2.component.properties:
log4j2.enableJndiContextSelector=true
Log4jContextSelector=org.apache.logging.log4j.core.selector.JndiContextSelector
Contents of web.xml added snippet (added above <listener> section):
<context-param>
<param-name>isLog4jAutoInitializationDisabled</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>isLog4jContextSelectorNamed</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>log4jContextName</param-name>
<param-value>testing2</param-value>
</context-param>
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>./WEB-INF/classes/log4j2.xml</param-value>
</context-param>
<env-entry>
<env-entry-name>log4j/context-name</env-entry-name>
<env-entry-value>testing2</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log4jServletFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Arbi Sookazian | Sr Software Engineer | Medata, Inc.
5 Peters Canyon Road, Suite 250
Irvine, CA 92606
[email protected] | www.medata.com