网上找了一段利用aop计算耗时日志的
2016-04-19 15:22
405 查看
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; import com.alibaba.common.lang.diagnostic.Profiler; @Aspect @Component public class ProfilerAspectJ { private static final String DOT_SPLIT = "."; //执行时间超过3s 的,输出出来 private static final String THREADHOLD = "THREADHOLD"; private static final long DEFAULTTHREADHOLD = 3000L; @Around("within(com.aliyun.activity.biz.*.impl..*)") public Object around(ProceedingJoinPoint jp) throws java.lang.Throwable { String className = jp.getTarget().getClass().getName(); String method = jp.getSignature().getName(); final String key = className + DOT_SPLIT + method; System.out.println("className: "+className); try { // 开始 Profiler Profiler.start(key); Profiler.enter(key); // 调用被代理类的方法 return jp.proceed(); } finally { Profiler.release(); // 释放 start 的栈 Profiler.release(); try { long threadHold = DEFAULTTHREADHOLD; final long duration = Profiler.getDuration(); if (duration > threadHold) { final String detail = Profiler.dump("Detail: ", " "); StringBuffer msg = new StringBuffer(); msg.append("调用服务:").append(className).append("的方法").append(method); if (null != jp.getArgs()) { msg.append(" 参数列表 ["); for (int i = 0; i < jp.getArgs().length; i++) { Object obj = jp.getArgs()[i]; msg.append(obj); if (i < jp.getArgs().length - 1) { msg.append(","); } } msg.append("]"); } msg.append("耗时:").append(duration).append("ms,超过预期\n").append(detail).append("\n"); } } finally { Profiler.reset(); } } } }
相关文章推荐
- Xmanager Enterprise 4 配置 centos7
- 【OpenCV】OpenCV3的第十天——imgproc组件之目标检测
- apache的ab命令做压力测试
- linux sighup 信号
- Linux命令--gzip,bzip2,tar,zip命令使用方法详解
- linux ping
- 【OpenCV】OpenCV3的第九天——imgproc组件之特征检测
- JAVA 获取linux系统磁盘使用率
- Golang在windows下交叉编译linux程序
- 【OpenCV】OpenCV3的第八天——imgproc组件之结构分析
- 《Linux内核分析》期终总结&《Linux及安全》期中总结
- Linux Proc文件系统实验(代码)
- 【OpenCV】OpenCV3的第七天——imgproc组件之直方图相关
- win10系统安装photoshop cs6教程方法
- flum+kafka搭建示例 监控日志增量变化传输到kafka
- flum+kafka搭建示例 监控日志增量变化传输到kafka
- 使用Shell脚本查询服务器硬件信息
- Linux内核分析-期中总结
- Linux之线程:控制与分离
- Linux设置自启动