diff --git a/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/Log4j2OutputAppender.java b/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/Log4j2OutputAppender.java new file mode 100644 index 000000000..890df092d --- /dev/null +++ b/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/Log4j2OutputAppender.java @@ -0,0 +1,10 @@ +package com.a.eye.skywalking.toolkit.log4j.v2.x; + +/** + * Created by wusheng on 2016/12/11. + */ +public class Log4j2OutputAppender { + public static void append(StringBuilder toAppendTo){ + toAppendTo.append("TID: N/A"); + } +} diff --git a/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/TraceIdConverter.java b/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/TraceIdConverter.java index f01726bc0..046081eef 100644 --- a/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/TraceIdConverter.java +++ b/skywalking-application-toolkit/skywalking-toolkit-log4j-2.x/src/main/java/com/a/eye/skywalking/toolkit/log4j/v2/x/TraceIdConverter.java @@ -29,6 +29,6 @@ public class TraceIdConverter extends LogEventPatternConverter { @Override public void format(LogEvent event, StringBuilder toAppendTo) { - toAppendTo.append("TID: N/A"); + Log4j2OutputAppender.append(toAppendTo); } } diff --git a/skywalking-network/src/main/proto/Spans.proto b/skywalking-network/src/main/proto/Spans.proto index 23d3373e7..df535d40b 100644 --- a/skywalking-network/src/main/proto/Spans.proto +++ b/skywalking-network/src/main/proto/Spans.proto @@ -42,7 +42,7 @@ message TraceId { message Span { TraceId traceId = 1; string parentLevelId=2; - int32 levelId = 3; // parentLevelId + "." + levelId + int32 levelId = 3; string viewpoint = 4; int64 startTime = 5; int64 cost = 6; diff --git a/skywalking-sniffer/skywalking-agent/dependency-reduced-pom.xml b/skywalking-sniffer/skywalking-agent/dependency-reduced-pom.xml index 02f4f3db5..a597e2a39 100644 --- a/skywalking-sniffer/skywalking-agent/dependency-reduced-pom.xml +++ b/skywalking-sniffer/skywalking-agent/dependency-reduced-pom.xml @@ -67,13 +67,35 @@ org.mockito - mockito-core + mockito-all 1.10.19 test + + + org.powermock + powermock-module-junit4 + 1.6.4 + test - objenesis - org.objenesis + powermock-module-junit4-common + org.powermock + + + + + org.powermock + powermock-api-mockito + 1.6.4 + test + + + mockito-core + org.mockito + + + powermock-api-support + org.powermock hamcrest-core diff --git a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java index b6702d74e..718ba814e 100644 --- a/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java +++ b/skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/plugin/interceptor/EnhancedClassInstanceContext.java @@ -10,8 +10,6 @@ import java.util.concurrent.ConcurrentHashMap; * */ public class EnhancedClassInstanceContext { - public static final String FIELD_NAME = "_$EnhancedClassInstanceContext"; - private Map context = new ConcurrentHashMap(); public void set(Object key, Object value){ @@ -21,12 +19,11 @@ public class EnhancedClassInstanceContext { public Object get(Object key){ return context.get(key); } - + public boolean isContain(Object key){ return context.containsKey(key); } - @SuppressWarnings("unchecked") public T get(Object key, Class type){ return (T)this.get(key); } diff --git a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/Log4j2OutputAppenderActivation.java b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/Log4j2OutputAppenderActivation.java new file mode 100644 index 000000000..4a99f4bcf --- /dev/null +++ b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/Log4j2OutputAppenderActivation.java @@ -0,0 +1,31 @@ +package com.a.eye.skywalking.toolkit.activation.log4j.v2.x; + +import com.a.eye.skywalking.plugin.interceptor.MethodMatcher; +import com.a.eye.skywalking.plugin.interceptor.StaticMethodsInterceptPoint; +import com.a.eye.skywalking.plugin.interceptor.enhance.ClassStaticMethodsEnhancePluginDefine; +import com.a.eye.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher; + +/** + * Created by wusheng on 2016/12/7. + */ +public class Log4j2OutputAppenderActivation extends ClassStaticMethodsEnhancePluginDefine { + @Override + protected String enhanceClassName() { + return "com.a.eye.skywalking.toolkit.log4j.v2.x.Log4j2OutputAppender"; + } + + @Override + protected StaticMethodsInterceptPoint[] getStaticMethodsInterceptPoints() { + return new StaticMethodsInterceptPoint[]{new StaticMethodsInterceptPoint() { + @Override + public MethodMatcher[] getMethodsMatchers() { + return new MethodMatcher[]{new SimpleMethodMatcher("append")}; + } + + @Override + public String getMethodsInterceptor() { + return "com.a.eye.skywalking.toolkit.activation.log4j.v2.x.PrintTraceIdInterceptor"; + } + }}; + } +} diff --git a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/PrintTraceIdInterceptor.java b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/PrintTraceIdInterceptor.java index 3aee17f0b..6fd22bcc5 100644 --- a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/PrintTraceIdInterceptor.java +++ b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/PrintTraceIdInterceptor.java @@ -2,16 +2,14 @@ package com.a.eye.skywalking.toolkit.activation.log4j.v2.x; import com.a.eye.skywalking.api.Tracing; import com.a.eye.skywalking.plugin.interceptor.EnhancedClassInstanceContext; -import com.a.eye.skywalking.plugin.interceptor.enhance.InstanceMethodInvokeContext; -import com.a.eye.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor; -import com.a.eye.skywalking.plugin.interceptor.enhance.MethodInterceptResult; +import com.a.eye.skywalking.plugin.interceptor.enhance.*; /** * Created by wusheng on 2016/12/7. */ -public class PrintTraceIdInterceptor implements InstanceMethodsAroundInterceptor { +public class PrintTraceIdInterceptor implements StaticMethodsAroundInterceptor { @Override - public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result) { + public void beforeMethod(StaticMethodInvokeContext interceptorContext, MethodInterceptResult result) { ((StringBuilder)interceptorContext.allArguments()[1]).append("TID:" + Tracing.getTraceId()); //make sure origin method do not invoke. @@ -19,12 +17,12 @@ public class PrintTraceIdInterceptor implements InstanceMethodsAroundInterceptor } @Override - public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { - return ret; + public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) { + return null; } @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { + public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) { } } diff --git a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/TraceIdConverterActivation.java b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/TraceIdConverterActivation.java deleted file mode 100644 index 233ae4f4a..000000000 --- a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/java/com/a/eye/skywalking/toolkit/activation/log4j/v2/x/TraceIdConverterActivation.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.a.eye.skywalking.toolkit.activation.log4j.v2.x; - -import com.a.eye.skywalking.plugin.interceptor.ConstructorInterceptPoint; -import com.a.eye.skywalking.plugin.interceptor.InstanceMethodsInterceptPoint; -import com.a.eye.skywalking.plugin.interceptor.MethodMatcher; -import com.a.eye.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; -import com.a.eye.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher; - -/** - * Created by wusheng on 2016/12/7. - */ -public class TraceIdConverterActivation extends ClassInstanceMethodsEnhancePluginDefine { - @Override - protected String enhanceClassName() { - return "com.a.eye.skywalking.toolkit.log4j.v2.x.TraceIdConverter"; - } - - @Override - protected ConstructorInterceptPoint[] getConstructorsInterceptPoints() { - return null; - } - - @Override - protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { - return new InstanceMethodsInterceptPoint[]{new InstanceMethodsInterceptPoint() { - @Override - public MethodMatcher[] getMethodsMatchers() { - return new MethodMatcher[]{new SimpleMethodMatcher("format")}; - } - - @Override - public String getMethodsInterceptor() { - return "com.a.eye.skywalking.toolkit.activation.log4j.v2.x.PrintTraceIdInterceptor"; - } - }}; - } -} diff --git a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/resources/skywalking-plugin.def b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/resources/skywalking-plugin.def index bba23263e..8fc2dd750 100644 --- a/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/resources/skywalking-plugin.def +++ b/skywalking-sniffer/skywalking-toolkit-activation/skywalking-toolkit-log4j-2.x-activation/src/main/resources/skywalking-plugin.def @@ -1 +1 @@ -com.a.eye.skywalking.toolkit.activation.log4j.v2.x.TraceIdConverterActivation +com.a.eye.skywalking.toolkit.activation.log4j.v2.x.Log4j2OutputAppenderActivation