You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2017/02/25 19:32:48 UTC
cxf git commit: CXF-7129: Provide an optional HTrace Logging receiver,
prettified the default output
Repository: cxf
Updated Branches:
refs/heads/master e7c9896f7 -> ceb04f964
CXF-7129: Provide an optional HTrace Logging receiver, prettified the default output
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/ceb04f96
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/ceb04f96
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/ceb04f96
Branch: refs/heads/master
Commit: ceb04f964e0772389b7a773114c282769ba913a3
Parents: e7c9896
Author: reta <dr...@gmail.com>
Authored: Sat Feb 25 14:32:25 2017 -0500
Committer: reta <dr...@gmail.com>
Committed: Sat Feb 25 14:32:25 2017 -0500
----------------------------------------------------------------------
.../tracing/htrace/ext/LoggingSpanReceiver.java | 114 ++++++++++++++++++-
1 file changed, 113 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/ceb04f96/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/tracing/htrace/ext/LoggingSpanReceiver.java
----------------------------------------------------------------------
diff --git a/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/tracing/htrace/ext/LoggingSpanReceiver.java b/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/tracing/htrace/ext/LoggingSpanReceiver.java
index 68845be..332b385 100644
--- a/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/tracing/htrace/ext/LoggingSpanReceiver.java
+++ b/integration/tracing/tracing-htrace/src/main/java/org/apache/cxf/tracing/htrace/ext/LoggingSpanReceiver.java
@@ -20,14 +20,23 @@
package org.apache.cxf.tracing.htrace.ext;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
import org.apache.htrace.core.HTraceConfiguration;
import org.apache.htrace.core.Span;
import org.apache.htrace.core.SpanReceiver;
+import org.apache.htrace.core.TimelineAnnotation;
+/**
+ * Span receiver implementation which outputs spans into logs.
+ */
public class LoggingSpanReceiver extends SpanReceiver {
public static final String LOG_LEVEL_KEY = "cxf.log.level";
public static final String LOG_LEVEL_ERROR = Level.SEVERE.getName();
@@ -44,10 +53,113 @@ public class LoggingSpanReceiver extends SpanReceiver {
@Override
public void receiveSpan(Span span) {
- LOG.log(level, span.toString());
+ LOG.log(level, toString(span));
}
@Override
public void close() throws IOException {
}
+
+ /**
+ * Sample log statements:
+ *
+ * INFO org.apache.cxf.tracing.htrace.ext.LoggingSpanReceiver - spanId=e5999a29a1ea468201acac30ec04ae39
+ * tracerId="tracer-server/192.168.0.100" start=1488049449621 stop=1488049451623 description="Get Employees"
+ * parents=[e5999a29a1ea4682d346ae17e51e0bd4] kvs=[] timelines=[[time=1488049451623
+ * message="Getting all employees"]]
+ *
+ * INFO org.apache.cxf.tracing.htrace.ext.LoggingSpanReceiver - spanId=e5999a29a1ea4682ac0a9ad638e084ed
+ * tracerId="tracer-client/192.168.0.100" start=1488049449074 stop=1488049454894
+ * description="GET http://localhost:8282/rest/api/people" parents=[] kvs=[] timelines=[]
+ */
+
+ private String toString(TimelineAnnotation annotation) {
+ final StringBuilder sb = new StringBuilder();
+ append(sb, "time", annotation.getTime());
+ append(sb, "message", annotation.getMessage(), true);
+ return sb.toString();
+ }
+
+ private String toString(Span span) {
+ final StringBuilder sb = new StringBuilder();
+
+ if (span.getSpanId().isValid()) {
+ append(sb, "spanId", span.getSpanId().toString());
+ }
+
+ String tracerId = span.getTracerId();
+ if (!StringUtils.isEmpty(tracerId)) {
+ append(sb, "tracerId", tracerId, true);
+ }
+
+ if (span.getStartTimeMillis() != 0) {
+ append(sb, "start", span.getStartTimeMillis());
+ }
+
+ if (span.getStopTimeMillis() != 0) {
+ append(sb, "stop", span.getStopTimeMillis());
+ }
+
+ if (!StringUtils.isEmpty(span.getDescription())) {
+ append(sb, "description", span.getDescription(), true);
+ }
+
+ append(sb, "parents", span.getParents());
+ append(sb, "kvs", span.getKVAnnotations());
+ append(sb, "timelines", span.getTimelineAnnotations(), t -> "[" + toString(t) + "]");
+
+ return sb.toString();
+ }
+
+ private<T> void append(StringBuilder sb, String key, Map<String, String> values) {
+ final StringBuilder inner = new StringBuilder();
+
+ for (final Map.Entry<String, String> entry : values.entrySet()) {
+ append(inner, quote(entry.getKey()), entry.getValue(), true);
+ }
+
+ append(sb, key, inner.insert(0, "[").append("]").toString());
+ }
+
+ private<T> void append(StringBuilder sb, String key, Collection<T> values, Function<T, String> stringifyer) {
+ append(sb, key, Arrays.toString(values.stream().map(stringifyer::apply).toArray(String[]::new)));
+ }
+
+ private<T> void append(StringBuilder sb, String key, T[] values) {
+ append(sb, key, Arrays.toString(Arrays.stream(values).map(T::toString).toArray(String[]::new)));
+ }
+
+ private void append(StringBuilder sb, String key, long value) {
+ append(sb, key, Long.toString(value));
+ }
+
+ private void append(StringBuilder sb, String key, String value) {
+ append(sb, key, value, false);
+ }
+
+ private void append(StringBuilder sb, String key, String value, boolean quoted) {
+ if (sb.length() > 0) {
+ sb.append(" ");
+ }
+
+ sb.append(key).append("=");
+ quote(sb, value, quoted);
+ }
+
+ private String quote(String value) {
+ final StringBuilder sb = new StringBuilder();
+ quote(sb, value, true);
+ return sb.toString();
+ }
+
+ private void quote(StringBuilder sb, String value, boolean quoted) {
+ if (quoted) {
+ sb.append("\"");
+ }
+
+ sb.append(value);
+ if (quoted) {
+ sb.append("\"");
+ }
+ }
}