Configuration using the web module

Christopher Schultz <[email protected]>
Newsgroups gmane.comp.jakarta.log4j.user
Message-ID <[email protected]>
All,

I have a web application which contains a log4j2.xml file in the WEB-INF 
directory. If I provide the full path using 
-Dlog4j.configurationFile=[path]/log4j2.xml, then log4j configures as I 
expect. Without this parameter, log4j does not find the configuration file.

I have the log2j libraries api, core, web, and 1.2 all installed into 
the web application. The web module configuration reference[1] says that 
files called log4j2* will be searched-for in the WEB-INF directory, but 
it looks like my file is not found.

I enabled debug logging, and this is what log4j says during 
autoconfiguration:

DEBUG StatusLogger Using configurationFactory 
org.apache.logging.log4j.core.config.ConfigurationFactory$Factory@3fed9a4
TRACE StatusLogger Trying to find [log4j2-test35dba0ad.properties] using 
context class loader ParallelWebappClassLoader

There follow a series of attempts to find files called 
log4j2-test35dba0ad.(properties|yml|yaml) and 
log4j2-test.(properties|yml|yaml) using the ParallelWebappClassLoader 
(which is the ClassLoader provided by Apache Tomcat). The ClassLoader 
will only look for resources in WEB-INF/lib/*.jar and WEB-INF/classes 
but not WEB-INF itself. Looking in WEB-INF/ requires a different kind of 
look-up.

This is also present in the log:

TRACE StatusLogger Trying to find [log4j2-test35dba0ad.properties] using 
ClassLoader.getSystemResource().

This is falling-back to using the system classloader, which of course 
won't find this file.

I think the documentation may be wrong; log4j doesn't appear to be 
looking in WEB-INF/ for files. Instead, it's using the ClassLoader which 
won't look there.

Moving my log4j2.xml file from WEB-INF/ to WEB-INF/classes allows log4j 
to find the file and use it for configuration as expected.

-chris

[1] https://logging.apache.org/log4j/2.x/manual/webapp.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.