Java 从两个不同的类登录xml的正确方法是什么?目前,我在生成的xml中发现了一个错误
默认情况下,代码为:Java 从两个不同的类登录xml的正确方法是什么?目前,我在生成的xml中发现了一个错误,java,xml,logging,java.util.logging,Java,Xml,Logging,Java.util.logging,默认情况下,代码为: 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); l
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中:
<?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 version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
两次?我想要在xml末尾附加
log
标记的xml。修复它的简单方法是配置FileHandler,以便在每次启动应用程序时生成新的文件名,例如
new FileHandler("log%g.xml", 100000000, 10);
有关详细信息,请参见API如果您希望在日志文件中完全避免使用xml头,可以在代码中尝试此操作
FileHandler fHandler = new FileHandler("LOGGED.xml", true);
fHandler.setFormatter(new XMLFormatter() {
@Override
public String getHead(Handler h) {
return "";
}
});
logger.addHandler(fHandler);
RFE中列出了建议的修补程序。您可以扩展XMLFormatter并重写
getHead
方法,以有条件地根据目标文件的大小(空或满)写入默认的head值或空字符串。假设您可以计算用于日志记录的当前文件。这可能有助于它们不会被删除,FileHandler每次都会创建一个新文件。我什么时候说过要避免头?我说过要附加日志消息而不重复
我该怎么做?
new FileHandler("log%g.xml", 100000000, 10);
FileHandler fHandler = new FileHandler("LOGGED.xml", true);
fHandler.setFormatter(new XMLFormatter() {
@Override
public String getHead(Handler h) {
return "";
}
});
logger.addHandler(fHandler);