2

私のSpringMVCプロジェクトでは、INFOメッセージから始まる電子メールロギングを有効にしました(デフォルトの動作はERRORメッセージから始まります)。

これはlog4j.xmlの私のアペンダー構成です:

<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
    <param name="SMTPDebug" value="true"/>
    <param name="SMTPProtocol" value="smtps"/>
    <param name="SMTPUsername" value="*"/>
    <param name="SMTPPassword" value="*"/>
    <param name="SMTPHost" value="*"/>
    <param name="SMTPPort" value="*"/>
    <param name="Subject" value="*"/>
    <param name="To" value="*"/>
    <param name="From" value="*"/>
    <param name="BufferSize" value="5"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{MM/dd/yyyy HH:mm:ss} [%M] %-5p %C - %m%n" />
    </layout>
    <triggeringPolicy  class="org.apache.log4j.rolling.FilterBasedTriggeringPolicy">
      <filter class="org.apache.log4j.filter.LevelRangeFilter">
        <param name="levelMin" value="INFO" />
      </filter>
    </triggeringPolicy>
</appender>

実行時に動作しますが、プロジェクトの起動時に同じ xml パーサー エラーと警告が表示されます。

log4j:WARN 要素タイプ「appender」の内容は、「(errorHandler?,param ,rollingPolicy?,triggeringPolicy?,connectionSource?,layout?,filter*,appender-ref*)」と一致する必要があります.*

どうしたの?
log4j-1.2.16 を使用しています。

4

1 に答える 1

1

その理由は、XML<appender>要素内の子の順序が、警告メッセージが示す DTD で宣言された順序に従う必要があるためだと思います。DTD 要素に関するW3Schoolsの引用:

子がコンマで区切られた順序で宣言されている場合、子はドキュメント内で同じ順序で表示される必要があります。

要素<layout>の後に<triggeringPolicy>要素を配置すると、警告が消える可能性があります。

于 2013-10-06T10:54:42.363 に答える