Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一些标准有效的方法来记录Java中写入流的数据_Java_Xml_Xmpp - Fatal编程技术网

是否有一些标准有效的方法来记录Java中写入流的数据

是否有一些标准有效的方法来记录Java中写入流的数据,java,xml,xmpp,Java,Xml,Xmpp,我正在写一个小小的XMPP客户端作为大学项目 要生成有效的XML标记,我使用标准库中的XMLStreamWriter。 出于调试目的,我希望看到它写入输出流的所有内容,即通过打开的套接字将其发送到world并将其记录到stderr。我发现的一个可能的解决方案是创建Writer类的子类来构造新的XMLStreamWriter 类似于以下代码: public XMPPWriter(final Writer out) throws XMLStreamException { XMLOutputF

我正在写一个小小的XMPP客户端作为大学项目

要生成有效的XML标记,我使用标准库中的XMLStreamWriter。
出于调试目的,我希望看到它写入输出流的所有内容,即通过打开的套接字将其发送到world并将其记录到stderr。我发现的一个可能的解决方案是创建Writer类的子类来构造新的XMLStreamWriter

类似于以下代码:

public XMPPWriter(final Writer out) throws XMLStreamException {
    XMLOutputFactory factory = XMLOutputFactory.newInstance();
    factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
    this.writer = factory.createXMLStreamWriter(new Writer() {

        @Override
        public void flush() throws IOException {
            System.err.println("");
            out.flush();
        }

        @Override
        public void write(char[] cbuf, int off, int len) throws IOException {
            System.err.write(String.valueOf(cbuf, off, len).getBytes());
            out.write(cbuf, off, len);
        }

        @Override
        public void close() throws IOException {
            out.close();
        }
    });
}

当然,这是最简单的情况,这个解决方案可以在很多方面得到改进。但我想知道有没有标准的、众所周知的方法来做这样的日志记录?

Apache Commons中的TeeOutputStream如何:@DNA谢谢!看起来很合适。但是有更灵活的东西吗?像标准库中的日志记录类之类的日志记录能力会很有帮助。考虑一下日志记录是否记录了你需要的,如果你需要监视TCP/IP字节流,那么就使用一个专用的工具。