Springboot日志埋点、问题追踪

实现平时项目中出现报错的时候,打印报错那次方法调用的详情。

源码链接

参考源码

https://github.com/EalenXie/aop-log.git

本文是基于改源码做的改造

本文源码

https://github.com/Curtain-Wang/aoplog.git

使用方法

  • 将源码中的包拷贝到项目中
  • 对于需要埋点的类、方法上加上@AopLog注解

输出格式改造说明

/**
 * @Author Curtain
 * @Date 2021/12/10 10:33
 * @Description collect app log 
 */
@Slf4j
public class DefaultLogCollector implements LogCollector {
    String logStr = "\n" +
            "{\n" +
            "    \"method\": \"%s\",\n" +
            "    \"args\": \"%s\",\n" +
            "    \"response\": \"%s\",\n" +
            "    \"isSuccess\": \"%b\"\n" +
            "}";
    @Override
    public void collect(LogData logData) {
        try {
            if (!logData.isSuccess()){
                log.info(String.format(logStr, logData.getMethod(), new ObjectMapper().writeValueAsString(logData.getArgs()), new ObjectMapper().writeValueAsString(logData.getRespBody()), logData.isSuccess()));
            }
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

这个里面的collect方法会在方法调用失败的时候触发,可以自己定义输出的内容。本文这里定义的是在方法调用失败的时候打印方法的名称、参数内容、方法返回内容、方法是否调用成功

效果

Springboot日志埋点、问题追踪_第1张图片

你可能感兴趣的:(编程,java,Spring,spring,boot,java,后端)