为什么每次运行log4j时都会收到XML格式警告?

问题描述

这是我在控制台上收到的警告:

log4j:WARN Continuable parsing error 1 and column 168
log4j:WARN Document root element "log4j:configuration",must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 1 and column 168
log4j:WARN Document is invalid: no grammar found.

这是我的log4j.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYstem "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j='http://jakarta.apache.org/log4j/'>
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>
    <appender name="file" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false" />
        <param name="maxFileSize" value="10MB" />
        <param name="maxBackupIndex" value="10" />
        <param name="file" value="log.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>
    <appender name="async" class="org.apache.log4j.AsyncAppender">
        <param name="BufferSize" value="500"/>
        <param name="LocationInfo" value="true"/>
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </appender>
    <logger name="logger-1">
        <level value="ERROR"/>
    </logger>
    <logger name="logger-2">
        <level value="ERROR"/>
    </logger>

    <root>
        <level value="ERROR" />
        <appender-ref ref="async"/>
    </root> 
</log4j:configuration>

这是我的主要方法

public static void main(String argv[]) {
            
    int i;
            
    String filepath = " log4j.xml";
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();          
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse(filepath);
                
                NodeList nodes = doc.getElementsByTagName("level");
                for (i = 0; i < nodes.getLength(); i++) {
                    Node staff = doc.getElementsByTagName("level").item(i);
                    NamednodeMap attr = staff.getAttributes();
                    Node nodeAttr = attr.getNamedItem("value");
                    nodeAttr.setTextContent("ERROR");
                }

                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                DOMSource source = new DOMSource(doc);
                StreamResult result = new StreamResult(new File(filepath));
                transformer.transform(source,result);
            
            DOMConfigurator.configure("log4j.xml")
}

我不确定是否正在发生这种情况,因为我在pom.xml文件中使用的是较旧版本的log4j(1.2.17)。我已经多次检查并使用过log4j.xml文件-我不知道发生了什么。我的主要方法有问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)