Commit 935288d5 authored by liaozan's avatar liaozan 🏀

Remove TraceParam

parent 6fac3c9d
...@@ -2,7 +2,6 @@ package com.schbrain.common; ...@@ -2,7 +2,6 @@ package com.schbrain.common;
import com.schbrain.common.util.support.jackson.ObjectMapperModuleConfiguration; import com.schbrain.common.util.support.jackson.ObjectMapperModuleConfiguration;
import com.schbrain.common.util.support.task.ThreadPoolConfiguration; import com.schbrain.common.util.support.task.ThreadPoolConfiguration;
import com.schbrain.common.util.support.trace.TraceParamAspect;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -11,7 +10,7 @@ import org.springframework.context.annotation.Import; ...@@ -11,7 +10,7 @@ import org.springframework.context.annotation.Import;
* @since 2022/1/11 * @since 2022/1/11
*/ */
@AutoConfiguration @AutoConfiguration
@Import({TraceParamAspect.class, ThreadPoolConfiguration.class, ObjectMapperModuleConfiguration.class}) @Import({ThreadPoolConfiguration.class, ObjectMapperModuleConfiguration.class})
public class CommonAutoConfiguration { public class CommonAutoConfiguration {
} }
package com.schbrain.common.util.support.trace;
import com.schbrain.common.util.JacksonUtils;
import java.lang.annotation.*;
import java.lang.reflect.Method;
import java.util.Map;
import static com.schbrain.common.util.ParameterDiscoverUtils.getMethodArgsMap;
/**
* Please use it only for method
* <p>
* Trace the parameter of method which annotated with this annotation
*
* @author liaozan
* @since 2022/3/31
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TraceParam {
FormatShape shape() default FormatShape.PRETTY_JSON;
enum FormatShape {
RAW {
@Override
protected String format0(Map<String, Object> argsMap) {
return argsMap.toString();
}
},
PRETTY_JSON {
@Override
public String format0(Map<String, Object> argsMap) {
return JacksonUtils.toPrettyJsonString(argsMap);
}
};
public String format(Method method, Object[] args) {
Map<String, Object> methodArgsMap = getMethodArgsMap(method, args);
return format0(methodArgsMap);
}
protected abstract String format0(Map<String, Object> argsMap);
}
}
package com.schbrain.common.util.support.trace;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.LoggerFactory;
import org.springframework.aop.Advisor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import java.lang.reflect.Method;
/**
* @author liaozan
* @since 2022/3/31
*/
@Slf4j
@Aspect
@ConditionalOnClass({Advisor.class, Aspect.class})
public class TraceParamAspect {
@Before("@annotation(traceParam)")
public void tracedMethod(JoinPoint joinPoint, TraceParam traceParam) {
try {
tracingParam(joinPoint, traceParam);
} catch (Exception e) {
log.warn("Could not extract args for method annotated with @{}", TraceParam.class.getSimpleName(), e);
}
}
protected void tracingParam(JoinPoint joinPoint, TraceParam annotation) {
if (!(joinPoint instanceof MethodSignature)) {
return;
}
MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
Class<?> declaringType = methodSignature.getDeclaringType();
Method method = methodSignature.getMethod();
Object[] args = joinPoint.getArgs();
String formattedArgs = annotation.shape().format(method, args);
String content = format(method, formattedArgs);
LoggerFactory.getLogger(declaringType).info(content);
}
protected String format(Method method, Object formattedArgs) {
return String.format("%s\n%s", method.toGenericString(), formattedArgs);
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment