“log4j:configuration” must match “(renderer….loggerFactory)?)”

21,452

Solution 1

According to the error message, the DTD expects all category elements to be ahead of the root element. You have them the wrong way round.

Solution 2

Follow this order:

<renderer></renderer>

<appender></appender>

<plugin></plugin>

<logger></logger>

<category></category>

<root></root>

<loggerfactory></loggerfactory>

<categoryfactory></categoryfactory>
Share:
21,452
Jaanus
Author by

Jaanus

Doing C#, Java 50-50. SOreadytohelp

Updated on February 11, 2020

Comments

  • Jaanus
    Jaanus over 4 years

    getting error, when deploying my war file to tomcat:

    log4j:WARN The content of element type "log4j:configuration" must match "(renderer*,throwableRenderer?,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)"
    

    I googled around and found out that ordering of my log4j.xml could be wrong, but it should be correct.

    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
    
      <appender name="console" class="org.apache.log4j.ConsoleAppender">  
        <param name="Target" value="System.out"/>  
        <layout class="org.apache.log4j.PatternLayout">  
          <param name="ConversionPattern" value="%-5p %d %c %x - %m%n"/>  
        </layout>  
      </appender>  
    
      <root>  
        <priority value ="error" />  
        <appender-ref ref="console" />  
      </root>  
    
      <category name="org.springframework" additivity="false">  
        <priority value="info" />  
        <appender-ref ref="console" />  
      </category>  
    
    </log4j:configuration>
    

    Any suggestions?