Re: Unable to config/init logging separation for web app on Tomcat 7.0.82

Arbi Sookazian <[email protected]> Tue, 29 Apr 2025 12:05:43 -0700 (PDT)
Newsgroups gmane.comp.jakarta.log4j.user
Message-ID <[email protected]>
--=_0ca5eed8-9dce-4d26-98d3-278ff54276a5
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

There seems to be an issue with reading from the WEB-INF/classes/log4j2.component.properties file (root cause unknown currently).If I add the following to $CATALINA_HOME/bin/setenv.sh file:export CATALINA_OPTS="$CATALINA_OPTS -DLog4jContextSelector=org.apache.logging.log4j.core.selector.JndiContextSelector"
the testing2-catalina.out separated logging file is created and written to as expected in $CATALINA_HOME/logs dir. However, I don't see it being created for testing1-catalina.out which is also configured for separated logging (root cause unknown).


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:55:21 -0700 (PDT)
Subject: Re: 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;}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

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



--=_0ca5eed8-9dce-4d26-98d3-278ff54276a5--