gpt4 book ai didi

java - 从两个不同的类登录 xml 的正确方法是什么?现在我在生成的 xml 中遇到错误

转载 作者:行者123 更新时间:2023-12-01 04:52:47 25 4
gpt4 key购买 nike

默认代码:

class Tester {
public static void main(String args[]) throws IOException{
Logger logger = Logger.getLogger(Tester.class.getName());
FileHandler fHandler = new FileHandler("LOGGED.xml",true);
logger.addHandler(fHandler);
logger.log(Level.INFO,"This is an info log message");
fHandler.close();
}
}

生成以下类型的xml:

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
<date>2013-02-03T08:16:37</date>
<millis>1359859597763</millis>
<sequence>0</sequence>
<logger>Tester</logger>
<level>INFO</level>
<class>Tester</class>
<method>main</method>
<thread>1</thread>
<message>This is an info log message</message>
</record>
</log>

但是如果我尝试通过以下代码附加到上面生成的xml:

class Tester_1{
public static void main(String args[]) {
try {
Logger logger = Logger.getLogger(Tester_1.class.getName());
FileHandler fHandler = new FileHandler("LOGGED.xml",true);
logger.addHandler(fHandler);
logger.log(Level.INFO,"This is a custom message from my own formatter !");
fHandler.close();
}catch(Exception exc) {
exc.printStackTrace();
}
}

}

它将以下内容附加到之前生成的 xml 中:

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
<date>2013-02-03T08:16:51</date>
<millis>1359859611306</millis>
<sequence>0</sequence>
<logger>Tester_1</logger>
<level>INFO</level>
<class>Tester_1</class>
<method>main</method>
<thread>1</thread>
<message>This is a custom message from my own formatter !</message>
</record>
</log>

当我尝试在浏览器中打开此 xml 时,出现以下错误:

This page contains the following errors:

error on line 27 at column 6: XML declaration allowed only at the start of the document

我该怎么做才能避免这些陈述:

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">

两次?我想要 xml 仅将 log 标记附加到 xml 末尾。

最佳答案

如果您想在日志文件中完全避免使用 xml header ,可以在代码中尝试此操作

    FileHandler fHandler = new FileHandler("LOGGED.xml", true);
fHandler.setFormatter(new XMLFormatter() {
@Override
public String getHead(Handler h) {
return "";
}
});
logger.addHandler(fHandler);

关于java - 从两个不同的类登录 xml 的正确方法是什么?现在我在生成的 xml 中遇到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com