[
https://issues.apache.org/jira/browse/CXF-1327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sean O'Callaghan closed CXF-1327.
---------------------------------
Resolution: Fixed
Committed the PrettyLoggingOutInterceptor
> Logging Interceptor with pretty formatting
> ------------------------------------------
>
> Key: CXF-1327
> URL: https://issues.apache.org/jira/browse/CXF-1327
> Project: CXF
> Issue Type: Wish
> Components: Tooling
> Reporter: Davide Gesino
> Assignee: Sean O'Callaghan
> Priority: Trivial
>
> LoggingInIterceptor and LoggingOutInterceptor are really useful, but
> sometimes it is difficult to read the SOAP messages without having a "pretty"
> identation, I would a LOG that outputs a nice formatted string with XML
> identation.
> Modifying the LoggingOutInterceptor something similar to the example I paste
> in the following, obtained modifying the LoggingOutInterceptor.
> I hav not included the length limit and used the jdom api instead of stax.
> :
> public class PrettyLoggingOutInterceptor extends AbstractPhaseInterceptor {
> private final Log LOG = LogFactory
> .getLog(PrettyLoggingOutInterceptor.class);
> private SAXBuilder saxBuilder = new SAXBuilder();
> private XMLOutputter xmlOutputter = new XMLOutputter();
> public PrettyLoggingOutInterceptor() {
> super(Phase.PRE_STREAM);
> addBefore(StaxOutInterceptor.class.getName());
> }
> public void handleMessage(Message message) throws Fault {
> final OutputStream os = message.getContent(OutputStream.class);
> if (os == null) {
> return;
> }
> if (!LOG.isInfoEnabled()) {
> return;
> }
> // Write the output while caching it for the log message
> final CacheAndWriteOutputStream newOut = new
> CacheAndWriteOutputStream( os);
> message.setContent(OutputStream.class, newOut);
> newOut.registerCallback(new LoggingCallback());
> }
> class LoggingCallback implements CachedOutputStreamCallback {
> public void onFlush(CachedOutputStream cos) {
> }
> public void onClose(CachedOutputStream cos) {
> try {
> Document jdoCument =
> saxBuilder.build(cos.getInputStream());
>
> xmlOutputter.setFormat(Format.getPrettyFormat());
> StringWriter writer = new StringWriter();
> xmlOutputter.output(jdoCument, writer);
> LOG.info(writer.getBuffer().toString());
> } catch (Exception e) {
> LOG.error("fatal parsing the SOAP message");
> LOG.error(e);
> }
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.