Search code examples
javaappenderlog4j

How to solve the warnings in log4j???Continuable parsing error...The content of element type "log4j:configuration" must match


Warnings are shown ...

log4j:WARN Continuable parsing error 28 and column 23
log4j:WARN The content of element type "log4j:configuration" must match
  "(renderer*,appender*,(category|logger)*,root?,categoryFactory?)".

when execute the java files

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration>
        <appender name="console" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="\n[%-6r] - %m" />
            </layout>
        </appender>
        <category name="se.jayway.ddsteps">
            <priority value="info"></priority>
        </category>
        <appender name="FILE" class="org.apache.log4j.FileAppender">
            <param name="file"
                value="D:/workspace_Testing/IdMUnitTests/logs/IdMUnitlog.log" />
            <param name="immediateFlush" value="true" />
            <param name="threshold" value="debug" />
            <param name="append" value="false" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%m%n" />
            </layout>
        </appender>

        <root>
            <priority value="INFO"></priority>
            <appender-ref ref="console" />
            <appender-ref ref="FILE" />
        </root>
    </log4j:configuration>

Solution

  • According to the error message, the DTD expects all elements in an order specified.

    (renderer*,appender*,(category|logger)*,root?,categoryFactory?)
    
    
    <?xml version="1.0" encoding="UTF-8" ?>
        <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
        <log4j:configuration>
            <appender name="console" class="org.apache.log4j.ConsoleAppender">
                <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="\n[%-6r] - %m" />
                </layout>
            </appender>
    
            <appender name="FILE" class="org.apache.log4j.FileAppender">
                <param name="file"
                    value="D:/workspace_Testing/IdMUnitTests/logs/IdMUnitlog.log" />
                <param name="immediateFlush" value="true" />
                <param name="threshold" value="debug" />
                <param name="append" value="false" />
                <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%m%n" />
                </layout>
            </appender>
    
            <category name="se.jayway.ddsteps">
                <priority value="info"></priority>
            </category>
    
            <root>
                <priority value="INFO"></priority>
                <appender-ref ref="console" />
                <appender-ref ref="FILE" />
            </root>
    
        </log4j:configuration>
    

    XML Configuration Order

    So remember to write xml in that order

    <renderer></renderer>
    
    <appender></appender>
    
    <plugin></plugin>
    
    <logger></logger>
    
    <category></category>
    
    <root></root>
    
    <loggerfactory></loggerfactory>
    
    <categoryfactory></categoryfactory>