通过拦截器来统计每个action的执行时间
2008-08-29 22:27
393 查看
struts2中已经有此拦截器了,但是这个拦截器的配置太麻烦,还要配置是否开启和日志的级别。本人认为太复杂,没有必要。
统计每个action的执行时间,在测试开发的过程中需要用到。所以将此拦截器的代码简化,并将log4j的日志级别提高到info。一旦测试通过在实际的生产环境中就直接将此拦截器从配置文件中去掉即可。详细的java代码如下:
package com.work.core.interceptor;
/*
* Copyright (c) 2002-2006 by OpenSymphony
* All rights reserved.
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* Timer简化版。
* @author wangmj
*/
public class TimerInterceptor extends AbstractInterceptor {
/**
*
*/
private static final long serialVersionUID = 6017311502566041661L;
private static final Log log = LogFactory.getLog(TimerInterceptor.class);
public String intercept(ActionInvocation invocation) throws Exception {
long startTime = System.currentTimeMillis();//计算开始日期
String result = invocation.invoke();
long executionTime = System.currentTimeMillis() - startTime;
StringBuffer message = new StringBuffer(100);
message.append("Executed action [");
String namespace = invocation.getProxy().getNamespace();
if ((namespace != null) && (namespace.trim().length() > 0)) {
message.append(namespace).append("/");
}
message.append(invocation.getProxy().getActionName());
message.append("!");
message.append(invocation.getProxy().getMethod());
message.append("] took ").append(executionTime).append(" ms.");
if (log.isInfoEnabled()) {
log.info(message.toString());
}
return result;
}
}
统计每个action的执行时间,在测试开发的过程中需要用到。所以将此拦截器的代码简化,并将log4j的日志级别提高到info。一旦测试通过在实际的生产环境中就直接将此拦截器从配置文件中去掉即可。详细的java代码如下:
package com.work.core.interceptor;
/*
* Copyright (c) 2002-2006 by OpenSymphony
* All rights reserved.
*/
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
/**
* Timer简化版。
* @author wangmj
*/
public class TimerInterceptor extends AbstractInterceptor {
/**
*
*/
private static final long serialVersionUID = 6017311502566041661L;
private static final Log log = LogFactory.getLog(TimerInterceptor.class);
public String intercept(ActionInvocation invocation) throws Exception {
long startTime = System.currentTimeMillis();//计算开始日期
String result = invocation.invoke();
long executionTime = System.currentTimeMillis() - startTime;
StringBuffer message = new StringBuffer(100);
message.append("Executed action [");
String namespace = invocation.getProxy().getNamespace();
if ((namespace != null) && (namespace.trim().length() > 0)) {
message.append(namespace).append("/");
}
message.append(invocation.getProxy().getActionName());
message.append("!");
message.append(invocation.getProxy().getMethod());
message.append("] took ").append(executionTime).append(" ms.");
if (log.isInfoEnabled()) {
log.info(message.toString());
}
return result;
}
}
相关文章推荐
- 通过拦截器来统计每个action的执行时间
- 通过拦截器来统计每个action的执行时间
- mybatis的拦截器实现统计分析sql的执行时间
- django通过middleware计算每个页面的详细执行时间
- java利用mybatis拦截器统计sql执行时间示例
- 在MVC或WEBAPI中记录每个Action的执行时间和记录下层方法调用时间
- 【MVC 过滤器的应用】ASP.NET MVC 如何统计 Action 方法的执行时间
- java 使用拦截器统计每个http请求的响应时间
- mybatis的拦截器实现统计分析sql的执行时间
- [例15.3] 为 Action 对象配置输出执行时间的拦截器, 查看执行 Action 所需时间
- SqlServer 统计 MVC 每个 Action 的 相应时间
- scala 统计Datastage log 中每个job 的执行时间 以及一个batch job 中total 时间
- c语言中如何添加计时函数,统计程序执行的时间
- 统计命令执行时间和获取swap内存
- linux 函数执行时间统计
- [Linux进程]统计进程的执行时间
- 简单统计Java方法中每行代码的执行时间
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 用于统计函数执行时间的类
- 统计方法执行时间