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

anuvabg picture anuvabg · Sep 5, 2014 · Viewed 23.5k times · Source

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>

Answer

Ankur Singhal picture Ankur Singhal · Sep 5, 2014

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>