Success!
The issue turned out to be that placing the log4j2 jars and
log4j2-tomcat.xml in the tomcat/lib folder no longer works.
The solution:
* Followed the official instructions to the letter
(https://logging.apache.org/log4j/2.x/log4j-appserver/index.html)
* Used this canned log4j2-tomcat.xml file that replicates the original
tomcat files but using log4j
(https://gist.github.com/bmaupin/475a0cd6e8b374d876f5085846761fb6)
* Could not edit setenv.sh in Windows (does not exist), so instead I
added the following (knowingly ugly and inflexible code - for now)
to catalina.bat:
* set
"CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\log4j2\lib\log4j-api-2.17.1.jar"
* set
"CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\log4j2\lib\log4j-core-2.17.1.jar"
* set
"CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\log4j2\lib\log4j-appserver-2.17.1.jar"
* set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\log4j2\conf"
It now puts all of Tomcat's logging in the files, with virtually nothing
in the console.
I hope the solution (or an improved version of this) helps others.
bruno
On 1/6/2022 5:34 PM, Ralph Goers wrote:
I haven’t checked Tomcat 9, but the log4j-appserver module was created to hook
into Tomcat 8.5 and up. I just not sure if Tomcat changed their logging
mechanism yet again.
Ralph
On Jan 6, 2022, at 2:43 PM, Bruno Melloni<x.lo...@melloni.com> wrote:
A correction, after doing more troubleshooting and using even the
original log4j2.xml (on the previous install) it seems that the old
version was logging nothing to the files from Tomcat itself, and was
displaying everything on the console instead... in whatever mechanism it
wanted, so only my own apps were logging to the log4j files, with the
Tomcat output getting lost.
So, the problem remains, it is not clear at all how you configure Tomcat
9 to use log4j2 after all, and none of the guides on the internet are
complete enough to follow verbatim.
On 1/6/2022 11:37 AM, Bruno Melloni wrote:
A couple months ago I had no problem configuring Tomcat 9 with java 16 to use
log4j2.
That time I simply deleted tomcat/conf/*logging.properties*, added to
*tomcat/lib* the following files and it worked.
* log4j-api-2.*.jar
* log4j-core-2.*.jar
* log4j-appserver-2.*.jar
* log4j2.xml
Now I am setting up a new tomcat 9.0.56 with java 17 and log4j 2.17.1, followed
the same steps with one difference... I tweaked the log4j2.xml to try to make
it cleaner and easier to maintain/adjust.
Unfortunately my new setup is failing to log anything at all. The only place
where I see something is on the console and it looks like it is not even log4j
output as it does not match the pattern I expected. I think I am
misunderstanding something about the use of properties in a log4j2.xml file or
I have some really dumb typo.
I hope someone can give a glance at the following and tell me where I messed up:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO"> <!-- used for internal log4j2 logging, not related
to apps or server -->
<Properties>
<Property name="appslogdir">D:/work/app-j17t9-C/logs</Property>
<Property name="appsarchivedir">D:/work/app-j17t9-C/logs/archive</Property>
<Property name="serverlogdir">D:/work/app-j17t9-C/logs/server</Property>
<Property
name="serverarchivedir">D:/work/app-j17t9-C/logs/server/archive</Property>
<Property name="layout">%d %-5p [%C] %m%n</Property>
<Property name="rolloversize">10 MB</Property>
</Properties>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="${layout}"/>
</Console>
<RollingFile name="FILE" fileName="${appslogdir}/apps.txt"
filePattern="${appsarchivedir}/$${date:yyyy-MM}/apps-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="${layout}">
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${rolloversize}"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingFile>
<RollingFile name="EMAIL" fileName="${appslogdir}/email.txt"
filePattern="${appsarchivedir}/$${date:yyyy-MM}/email-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="${layout}">
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${rolloversize}"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingFile>
<!-- TOMCAT server appenders -->
<RollingFile name="CATALINA" fileName="${serverlogdir}/catalina.txt"
filePattern="${serverarchivedir}/$${date:yyyy-MM}/catalina-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${rolloversize}"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingFile>
<RollingFile name="LOCALHOST" fileName="${serverlogdir}/localhost.txt"
filePattern="${serverarchivedir}/$${date:yyyy-MM}/localhost-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${rolloversize}"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingFile>
<RollingFile name="MANAGER" fileName="${serverlogdir}/manager.txt"
filePattern="${serverarchivedir}/$${date:yyyy-MM}/manager-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${rolloversize}"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingFile>
<RollingFile name="HOSTMANAGER" fileName="${serverlogdir}/host-manager.txt"
filePattern="${serverarchivedir}/$${date:yyyy-MM}/host-manager-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="${layout}"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="${rolloversize}"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<!-- Root level="error" -->
<AppenderRef ref="CONSOLE"/>
<AppenderRef ref="FILE"/>
</Root>
<!-- avoid duplicated logs with additivity=false -->
<Logger name="net.cndc" level="debug" additivity="false">
<AppenderRef ref="CONSOLE"/>
<AppenderRef ref="FILE"/>
</Logger>
<!-- OPEN SOURCE LIBRARY loggers -->
<Logger name="org.springframework" level="warn"/>
<!-- TOMCAT SERVER loggers -->
<Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]"
level="info" additivity="false">
<AppenderRef ref="LOCALHOST" />
</Logger>
<Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]"
level="info" additivity="false">
<AppenderRef ref="MANAGER" />
</Logger>
<Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]"
level="info" additivity="false">
<AppenderRef ref="HOSTMANAGER" />
</Logger>
<Logger name="org.apache.catalina" level="info" additivity="false"> <!--
Might need to tweak this, normally is Root -->
<AppenderRef ref="CATALINA" />
</Logger>
</Loggers>
</Configuration>
---------------------------------------------------------------------
To unsubscribe, e-mail:log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail:log4j-user-h...@logging.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail:log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail:log4j-user-h...@logging.apache.org