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>

Reply via email to