Java:将Marshaller输出重定向到log4j

时间:2016-02-23 09:29:43

标签: java xml logging log4j rollingfileappender

我想让我的程序使用以下命令记录给定对象的XML:

Marshaller.marshal(Object jaxbElement, OutputStream os);

目前,我正在使用stdout作为OutputStream。但stdout不会打印在log4j日志文件中。

JAXBContext jc = JAXBContext.newInstance(SomeClass.class);
Marshaller m = jc.createMarshaller();
m.marshal(input, System.out);

如何将此方法的输出重定向到log4j日志文件?

由于

1 个答案:

答案 0 :(得分:1)

请参阅ByteArrayOutputStream创建OutputStream,然后使用ByteArrayOutputStream#toString()转换为String

您修改过的代码:

OutputStream os = new ByteArrayOutputStream();
JAXBContext jc = JAXBContext.newInstance(SomeClass.class);
Marshaller m = jc.createMarshaller();
m.marshal(input, os);
String xml = os.toString();
logger.debug(xml);