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>

Reply via email to