Log4J работает на уровне DEBUG на Tomcat 5.5, несмотря на log4j.xml

Я работаю над устаревшим веб-приложением интрасети в своей компании, и у нас возникла серьезная проблема с ведением журнала. Один из процессов, которые мы запускаем, должен иметь дело с 34-тысячными записями с использованием AXIS, и, несмотря на все наши усилия, AXIS работает на уровне журнала DEBUG, создавая гигабайты файлов журнала. Другие зависимости также работают в DEBUG, несмотря на наши настройки.

Приложение работает на Tomcat 5.5 (без лекций, пожалуйста).

Вот пример вывода журнала из 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

Вот файл log4j.xml:

<?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>

Я запустил приложение с настройкой -Dlog4j.debug для JVM и подтвердил, что Log4J использует предоставленный нами файл log4j.xml при работе под Gradle/Jetty, по крайней мере:

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

Я предполагаю, что эта проблема вызвана одной из новых зависимостей, которые мы добавили в проект, поскольку до недавнего времени у нас ее не было, но я просто не знаю, что с ней делать на данный момент. Любая помощь будет принята с благодарностью.


person Michael Oryl    schedule 05.11.2013    source источник


Ответы (1)


Проблема заключалась в том, что SLF4J выбирал другую привязку в зависимости от среды выполнения. Некоторые из используемых нами зависимостей имеют привязки, что приводит к множеству привязок в проекте.

Когда наше приложение запускалось под Gradle/Jetty, оно выбирало logback. Это была система, для которой мы настроили.

Однако при работе на Tomcat SLF4J выбрал привязку Logback, которая не была настроена.

Добавление конфигурации logback.xml позволило контролировать ведение журнала при работе под Tomcat.

person Michael Oryl    schedule 05.11.2013