1

我正在我的公司开发一个旧的 Intranet Web 应用程序,我们在日志记录方面遇到了一个重大问题。我们运行的进程之一必须使用 AXIS 处理 34k 记录,尽管我们尽了最大努力,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>

我已经使用 JVM 的 -Dlog4j.debug 设置运行应用程序,并确认 Log4J 在 Gradle/Jetty 下运行时正在使用我们提供的 log4j.xml 文件,至少:

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

我认为这是我们添加到项目中的新依赖项之一导致了这个问题,因为我们直到最近才拥有它,但我现在不知道如何处理它。任何帮助将不胜感激。

4

1 回答 1

0

问题是 SLF4J 根据运行时环境选择不同的绑定。我们使用的一些依赖项中有绑定,导致项目中有多个绑定。

当我们的应用在 Gradle/Jetty 下运行时,它选择了 logback。这就是我们配置的系统。

但是,在 Tomcat 上运行时,SLF4J 选择了 Logback 绑定,没有配置。

添加 logback.xml 配置可以在 Tomcat 下运行时控制我们的日志记录。

于 2013-11-05T20:09:38.213 回答