java - 在 xml 日志文件中记录 xml 数据

标签 java xml xml-serialization logging

我需要记录一些 xml 数据(目前是一个 JDOM 文档),我正试图将它输出到一个标准的 Java 日志。但是,这只会生成标签的 < 和 > 端重新编码为 <? ?>

虽然这可以解析为正确的信息,但它使日志文件实际上不可读。任何人都可以为此提供更好的解决方案吗?我已经阅读了很多关于此的帖子,但似乎没有人给出答案 - 但是,如果我错过了答案,请引导我到正确的帖子!

Current Code: 一个简化的案例来演示什么是不工作的,删除了文档到 XML 的传输(这可以使用 XMLOutputter().outputString(document) 成功完成) )。


try {
    Logger logger = Logger.getLogger("companyname");

    FileHandler fh = new FileHandler("log.log");
    fh.setEncoding("UTF-8");

    logger.addHandler(fh);
    logger.setLevel(Level.ALL);

    String message = "<tag>Some Text</tag>";
    Logger.getLogger("companyname").log(Level.CONFIG, message);
}
catch (IOException e) {
    e.printStackTrace();
}   

最佳答案

这听起来像是在做正确的事情 - 但您应该使用工具来查看日志条目,而不是尝试直接读取日志文件。任何读取日志文件并期望内容为普通文本内容(并且可能会忽略意外标签)的任何内容都将正确处理转义文本,但如果文本未被转义则会中断。

换一种方式思考问题:假设您记录了一个字符串,而该字符串恰好只包含一个“<” - 您真的希望日志文件成为无效的 XML 文档吗?

关于java - 在 xml 日志文件中记录 xml 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229989/

相关文章:

java - 使用 ExecutorService 并行化循环来执行任务

c# - 具有单字节序列属性的 complexType 服务,Bug?

c# - 自定义 XSD 类型的 Xml 序列化

xml - com.opensymphony.xwork2.inject.DependencyException : com. opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException

c# - 为什么 XmlSerializer.Order 这样做

java - Android - 根据类型强制属性

java - 操作栏在 Lollipop 之前的设备中透明

java - 如何通过 Jersey 响应对象同时传输 OutputStream

xml - Golang XML 属性和值

xml - 使用 SimpleXmlElement 和 symfony2 输出 xml 文件