You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2010/08/05 09:42:58 UTC
svn commit: r982491 - in
/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor:
AbstractLoggingInterceptor.java LoggingInInterceptor.java
LoggingOutInterceptor.java
Author: ningjiang
Date: Thu Aug 5 07:42:57 2010
New Revision: 982491
URL: http://svn.apache.org/viewvc?rev=982491&view=rev
Log:
CXF-2931 Add configurable pretty printing to the CXF logging in/out interceptors
Modified:
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java?rev=982491&r1=982490&r2=982491&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractLoggingInterceptor.java Thu Aug 5 07:42:57 2010
@@ -21,11 +21,20 @@ package org.apache.cxf.interceptor;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
+import java.io.StringWriter;
import java.net.URI;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
@@ -39,6 +48,7 @@ public abstract class AbstractLoggingInt
protected int limit = 100 * 1024;
protected PrintWriter writer;
+ protected boolean prettyLogging;
public AbstractLoggingInterceptor(String phase) {
@@ -77,7 +87,51 @@ public abstract class AbstractLoggingInt
public int getLimit() {
return limit;
- }
+ }
+
+ public void setPrettyLogging(boolean flag) {
+ prettyLogging = flag;
+ }
+
+ public boolean isPrettyLogging() {
+ return prettyLogging;
+ }
+
+
+ protected void writePayload(StringBuilder builder, CachedOutputStream cos, String encoding)
+ throws Exception {
+ if (isPrettyLogging()) {
+
+ TransformerFactory tfactory = TransformerFactory.newInstance();
+ try {
+ tfactory.setAttribute("indent-number", "2");
+ } catch (Exception ex) {
+ // ignore
+ }
+ Transformer serializer;
+ serializer = tfactory.newTransformer();
+ // Setup indenting to "pretty print"
+ serializer.setOutputProperty(OutputKeys.INDENT, "yes");
+ serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+
+ StringWriter swriter = new StringWriter();
+ serializer.transform(new StreamSource(cos.getInputStream()), new StreamResult(swriter));
+ String result = swriter.toString();
+ if (result.length() < limit || limit == -1) {
+ builder.append(swriter.toString());
+ } else {
+ builder.append(swriter.toString().substring(0, limit));
+ }
+
+ } else {
+ if (StringUtils.isEmpty(encoding)) {
+ cos.writeCacheTo(builder, limit);
+ } else {
+ cos.writeCacheTo(builder, encoding, limit);
+ }
+
+ }
+ }
/**
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java?rev=982491&r1=982490&r2=982491&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingInInterceptor.java Thu Aug 5 07:42:57 2010
@@ -18,13 +18,11 @@
*/
package org.apache.cxf.interceptor;
-import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.logging.Level;
import org.apache.cxf.common.injection.NoJSR250Annotations;
-import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.message.Message;
@@ -117,14 +115,10 @@ public class LoggingInInterceptor extend
if (bos.size() > limit) {
buffer.getMessage().append("(message truncated to " + limit + " bytes)\n");
}
- if (StringUtils.isEmpty(encoding)) {
- bos.writeCacheTo(buffer.getPayload(), limit);
- } else {
- bos.writeCacheTo(buffer.getPayload(), encoding, limit);
- }
+ writePayload(buffer.getPayload(), bos, encoding);
bos.close();
- } catch (IOException e) {
+ } catch (Exception e) {
throw new Fault(e);
}
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java?rev=982491&r1=982490&r2=982491&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/LoggingOutInterceptor.java Thu Aug 5 07:42:57 2010
@@ -24,7 +24,6 @@ import java.io.PrintWriter;
import java.util.logging.Level;
import org.apache.cxf.common.injection.NoJSR250Annotations;
-import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.io.CacheAndWriteOutputStream;
import org.apache.cxf.io.CachedOutputStream;
import org.apache.cxf.io.CachedOutputStreamCallback;
@@ -134,11 +133,7 @@ public class LoggingOutInterceptor exten
}
}
try {
- if (StringUtils.isEmpty(encoding)) {
- cos.writeCacheTo(buffer.getPayload(), limit);
- } else {
- cos.writeCacheTo(buffer.getPayload(), encoding, limit);
- }
+ writePayload(buffer.getPayload(), cos, encoding);
} catch (Exception ex) {
//ignore
}