Log4j: WARN. The root element of the document "log4j: configuration" must match the root of the DOCTYPE "null"

I want to link my log4j.xml with log4j.xsd (xml schema). The project has no warnings or errors. But when I start, I have console warnings like this:

log4j: WARN Continuous parsing error 6 and column 66.

log4j: WARN. The root element of the document "log4j: configuration" must match the root of the DOCTYPE "null".

log4j: WARN Continuous parsing error 6 and column 66.

log4j: WARN Document is invalid: grammar not found.

I think the problem is in the layout. But I do not know how to write this normally. I hope for your advice.

My log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" debug="false" xsi:schemaLocation="http://www.example.org/log4j log4j.xsd "> <appender name="logFileAppender" class="org.apache.log4j.RollingFileAppender"> <param name="File" value="E:/Codes/HorseRacing/logFile.log"/> <param name="MaxFileSize" value="1MB"/> <param name="MaxBackupIndex" value="5"/> <param name="Encoding" value="UTF-8"/> <layout class="org.apache.log4j.EnhancedPatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} [%-5p][%-16.16t][%40.40c] - %m%n"/> </layout> </appender> <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="Cp866"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ISO8601} [%-5p][%-25.25l][%10.10c] - %m%n" /> </layout> </appender> <logger name="appLogger"> <level value="INFO"/> <appender-ref ref="logFileAppender"/> <appender-ref ref="ConsoleAppender"/> </logger> </log4j:configuration> 

And my log4j.xsd:

 <?xml version="1.0" encoding="UTF-8"?> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="configuration"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" name="appender"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" name="param"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="value" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="layout"> <xsd:complexType> <xsd:sequence> <xsd:element name="param"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="value" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="class" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" /> <xsd:attribute name="class" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="logger"> <xsd:complexType> <xsd:sequence> <xsd:element name="level"> <xsd:complexType> <xsd:attribute name="value" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element maxOccurs="unbounded" name="appender-ref"> <xsd:complexType> <xsd:attribute name="ref" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="debug" type="xsd:boolean" /> <xsd:attribute name="schemaLocation" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema> <logger name="appLogger"> <level value="INFO"/> <appender-ref ref="logFileAppender"/> <appender-ref ref="ConsoleAppender"/> </logger> </log4j:configuration> 

PS Sorry for my English ...

+8
xml doctype log4j xsd
source share
2 answers

At the bank that produces this message, it is expected that a standard DTD check will be checked, not a schema.

Check your class path. You are using an too old version of the framework for this configuration. Most likely, you have several versions of the jar with the same name on your drive, and such entries will indicate to you the problem and the removal of very old libraries that you really do not want to use.

+5
source share

Add the following line to the log4j.xml configuration file immediately after the <xml> element:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

Full log4j configuration example from their wiki:

 <?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 %c{1} - %m%n"/> </layout> </appender> <root> <priority value ="debug" /> <appender-ref ref="console" /> </root> </log4j:configuration> 
+11
source share

All Articles