Log to configure Log4j for multi-module EAR project

Arnold Morein <[email protected]>
Newsgroups gmane.comp.jakarta.log4j.user
Message-ID <[email protected]>
I’ve looked high and low and there is nothing but vague references and comments, most of them stale.

I have an EAR with two EJB modules and a WAR module.

The log4j and slf4j jars are in the EAR’s /lib folder. Each module has a log4j2.xml/.dtd pair in the META-INF folder, except the WAR where it is in WEB-INF/classes. The WAR project also has log4j-web.jar in its /lib folder.

Deploying on Wildfly 21. The loggers defined in the WAR’s log4j2.xml file are created because the files are created. The ones from the EJB modules are not.

I even went to the point of creating a @Startup/@Singleton class in each of the EJB modules that does this:


ConfigurationBuilder<BuiltConfiguration> configBuilder = ConfigurationBuilderFactory.newConfigurationBuilder();
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("META-INF/log4j2.xml");
ConfigurationSource configurationSource = new ConfigurationSource(inputStream);
configBuilder.setConfigurationSource(configurationSource);
loggerContext = Configurator.initialize(configBuilder.build());
loggerContext.initialize();
loggerContext.start();

I can step through the code and it all works. The XML file is read just fine (can send the stream to a string and it is correct).

No exception is thrown (from either of the other two modules); but the files are not being opened and nothing written.

Each of the 3 xml files have the same at the top, but only the WAR instance is recognized:

    <properties>
        <!-- when using file logger -->
        <property name="maxDays">90</property>
        <property name="maxFileSize">20 MB</property>
        <property name="logBaseDir">/logs/app_name</property>
        <property name="patternStr">%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %l - %msg%n</property>
    </properties>
   
    <Appenders>
        <Console
            name="STDOUT"
            target="SYSTEM_OUT"
        >
            <PatternLayout pattern="${patternStr}" />
        </Console>
        <RollingFile
            name=“APP_NAME_DB"
            fileName="${logBaseDir}/${hostName}_app_name_db.log"
            filePattern="${logBaseDir}/rotated/${hostName}_app_name_db.%d{yyyy-MM-dd}-%i.log.gz"
        >
            <PatternLayout pattern="${patternStr}" />
            <Policies>
                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="${maxFileSize}" />
                <TimeBasedTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="${maxDays}" />
        </RollingFile>
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.