接口

Controller接口调试

打印Controller接口的请求参数、请求Header和响应结果

1
2
3
4
5
6
spring:
mvc:
log-request-details: true
logging:
level:
web: TRACE

加上 log-request-details 这个才不会被打码.

统计接口耗时

AOP

优点:代码解耦,复用性强,易于维护。 

缺点:可能增加系统复杂度,性能略有损耗(毕竟要生成代理)。

拦截器

优点:与Spring MVC等框架集成好,实现简单。

缺点:只能用于Web层,不能跨应用层。

性能监控工具

优点:功能全面,可视化强,易于分析。 

缺点:可能引入外部依赖,成本较高。

可以使用 Listener 实现简单的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

@Component
public class TimeCountListener implements ApplicationListener<ServletRequestHandledEvent> {

@Override
public void onApplicationEvent(ServletRequestHandledEvent event) {
Throwable failureCause = event.getFailureCause() ;
if (failureCause != null) {
System.err.printf("错误原因: %s%n", failureCause.getMessage()) ;
}
System.err.println("========================================") ;
System.err.printf("请求客户端地址:%s\n请求URL: %s\n请求Method: %s\n请求耗时: %d毫秒%n",
event.getClientAddress(),
event.getRequestUrl(),
event.getMethod(),
event.getProcessingTimeMillis());
System.err.println("========================================") ;
}
}