package org.skywalking.apm.toolkit.activation.log.log4j.v2.x;
import org.skywalking.apm.agent.core.context.ContextManager;
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult;
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInvokeContext;
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodInvokeContext;
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsAroundInterceptor;
/**
* Created by wusheng on 2016/12/7.
*/
public class PrintTraceIdInterceptor implements StaticMethodsAroundInterceptor {
/**
* Override org.skywalking.apm.toolkit.log.log4j.v2.x.Log4j2OutputAppender.append(),
*
* @param interceptorContext method context, includes class name, method name, etc.
* @param result change this result, to output the traceId. The origin append() method will not invoke.
*/
@Override
public void beforeMethod(StaticMethodInvokeContext interceptorContext, MethodInterceptResult result) {
((StringBuilder) interceptorContext.allArguments()[0]).append("TID:" + ContextManager.getGlobalTraceId());
//make sure origin method do not invoke.
result.defineReturnValue(null);
}
@Override
public Object afterMethod(StaticMethodInvokeContext interceptorContext, Object ret) {
return null;
}
@Override
public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) {
}
}