2014-10-01 60 views
6

嗨,通过以下链接我能够将JAXB转换为java对象并使用下面的语句在控制台中打印它。如何将jaxb打印到java对象到记录器中

http://www.mkyong.com/java/jaxb-hello-world-example/

jaxbMarshaller.marshal(customer, System.out); 

,但我想打印记录仪的输出。

前)log.info(客户)或log.debug(客户)

我使用Apache log4j.Does人有任何想法?

+3

写入到一个'StringWriter'和日志'stringWriter.toString()'。 – lexicore 2014-10-01 11:12:46

回答

4

下面一个可行的办法..

Customer customer = new Customer(); 
//set customer attributes 
JAXBContext jc = JAXBContext.newInstance(Customer.class); 
Marshaller marshaller = jc.createMarshaller(); 
StringWriter stringWriter = new StringWriter(); 
marshaller.marshal(customer, stringWriter); 
log.info(stringWriter.toString()); 
+0

谢谢。它工作的很好。在stringWriter中有任何漂亮的打印选项,因为rightNow它打印在一条水平线上。 – VelNaga 2014-10-01 13:21:54

+3

你应该添加这行来格式化输出'marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);' – Xstian 2014-10-01 13:24:50

+0

你真棒。谢谢。 – VelNaga 2014-10-01 13:39:15