Question

I'm working on a legacy intranet web app at my company, and we're having a major problem with logging. One of the processes we run has to deal with 34k records using AXIS, and in spite of our best efforts, AXIS is running at the DEBUG log level - creating gigs of log files. Other dependencies are running at DEBUG in spite of our settings, too.

The application runs on Tomcat 5.5 (no lectures, please).

Here is an example of the logging output from AXIS:

    12:44:05.601 [Thread-31] DEBUG o.a.axis.i18n.ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(endElem00)
    12:44:05.601 [Thread-31] DEBUG o.a.a.encoding.SerializationContext - End element direction
    12:44:05.601 [Thread-31] DEBUG o.a.axis.i18n.ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(endElem00)
    12:44:05.602 [Thread-31] DEBUG o.a.a.encoding.SerializationContext - End element filter

Here is the log4j.xml file:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="axis" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/axis.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="ui" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/web.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="framework" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/websiteFramework.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="webservice" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/webService.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="ibatis" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/ibatis.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="sql" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/sql.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="spring" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/spring.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="general" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="../logs/cair.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>
    <appender name="activityLogger" class="org.apache.log4j.jdbc.JDBCAppender">
        <param name="user" value="webapps_user"/>
        <param name="password" value="speedrac5r"/>
        <param name="URL" value="jdbc:oracle:thin:@dvba02:1521:dvba02"/>
        <param name="driver" value="oracle.jdbc.driver.OracleDriver"/>
        <layout class="com.pml.shared.logging.activitydb.ActivityDBPatternLayout">
            <param name="separator" value=","/>
            <param name="ConversionPattern" value="INSERT INTO WEB_APPLCTN_LOG (WEB_APPLCTN_LOG_ID, ACTVTY_TYPE_CD, USER_ID, USER_ROLE_CD, CLIENT_ID, AGT_CD, OFFC_CD, WEB_APPLCTN_ID, ACTVTY_CMNT) VALUES (DEFAULT, %A,'%u',(select USER_ROLE_CD from user_role u where u.USER_ROLE_DESC='%r'),'%c', '%g', '%o', %a, '%v')"/>
        </layout>
    </appender>

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d ${%t} %-5p %c - %m%n"/>
        </layout>
    </appender>

    <!--
        <appender name="emailws" class="org.apache.log4j.net.SMTPAppender">
            <param name="BufferSize" value="512"/>
            <param name="SMTPHost" value="@deploy.cair.emaillogger.SMTPHOST@"/>
            <param name="Threshold" value="ERROR"/>
            <param name="To" value="@deploy.cairws.emaillogger.TO_ADDRESS@"/>
            <param name="Subject" value="@deploy.cairws.emaillogger.SUBJECT@"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
            </layout>
        </appender>
        <appender name="emailui" class="org.apache.log4j.net.SMTPAppender">
            <param name="BufferSize" value="512"/>
            <param name="SMTPHost" value="@deploy.cair.emaillogger.SMTPHOST@"/>
            <param name="Threshold" value="ERROR"/>
            <param name="To" value="@deploy.cairui.emaillogger.TO_ADDRESS@"/>
            <param name="Subject" value="@deploy.cairui.emaillogger.SUBJECT@"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/>
            </layout>
        </appender>
    -->

    <logger name="com.pml.website.alerts">
        <level value="ERROR"/>
        <appender-ref ref="ui"/>
<!--
        <appender-ref ref="emailui"/>
-->
    </logger>
    <logger name="com.pml.webservices">
        <level value="INFO"/>
        <appender-ref ref="webservice"/>
    <!--        <appender-ref ref="emailws"/>-->
    </logger>
    <logger name="com.pml.website.alerts.utils.agentInfoCache">
        <level value="ERROR"/>
        <appender-ref ref="ui"/>
    </logger>
    <logger name="com.pml.website.framework">
        <level value="INFO"/>
        <appender-ref ref="framework"/>
    </logger>
    <logger name="org.apache.axis">
        <level value="OFF"/>
        <appender-ref ref="axis"/>
    </logger>
    <logger name="com.ibatis">
        <level value="ERROR"/>
        <appender-ref ref="ibatis"/>
    </logger>
    <logger name="java.sql">
        <level value="ERROR"/>
        <appender-ref ref="sql"/>
    </logger>
    <logger name="org.springframework">
        <level value="ERROR"/>
        <appender-ref ref="sql"/>
    </logger>
    <logger name="AuditLog">
        <level value="DEBUG"/>
        <appender-ref ref="activityLogger"/>
    </logger>

    <root>
        <level value="ERROR" />
        <appender-ref ref="general"/>
    </root>

</log4j:configuration>

I've run the application with the -Dlog4j.debug setting for the JVM and have confirmed that Log4J is using our supplied log4j.xml file when running under Gradle/Jetty, at least:

    log4j: Using URL [file:/C:/Projects/CAIR/build/resources/main/log4j.xml] for automatic log4j configuration.

I assume that it is one of the new dependencies we added to the project that is causing this problem, since we didn't have it until recently, but I just don't know what to do with it at this point. Any help would be greatly appreciated.

Was it helpful?

Solution

The problem was that SLF4J was choosing a different binding depending on the runtime environment. Some of the dependencies we use have bindings in them, leading to multiple bindings in the project.

When our app was run under Gradle/Jetty, it chose logback. That was the system we had configured for.

However, when running on Tomcat, SLF4J chose a Logback binding, which was not configured.

Adding a logback.xml configuration got our logging under control while running under Tomcat.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top