当前位置:首页 > 物流管理系统-
25
总结:
图形报表业界已经相当成熟,提出公用,称作报表引擎。
3. 系统的监控,系统想知道系统的访问瓶颈在哪里?
需求
系统瓶颈是指,访问最长时间,写数据操作,写磁盘文件操作。都比较耗时,用户体验不好。
1) 找出系统这些操作慢的地方, 2) 分析原因
3) 优化,用户使用频繁模块,对其优化
实现一个性能监控的程序
a) 早期使用继承方式
记录开始时间,记录结束时间,结束时间-开始时间=耗时 写到日志文件中,写到数据库中
b) 拦截器
配置springmvc拦截器,记录开始时间,结束时间,打日志。
c) 开发步骤
1) 写一个拦截器,实现一个接口HandlerInterceptor 2) 实现共用的变量,安全性
3) 配置springmvc拦截器配置,springmvc-servlet.xml
26
package cn.itcast.jk.interceptor;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;
import common.Logger;
//功能:实现对所有类方法执行时间的监控
public class TimeInterceptor implements HandlerInterceptor {
//引入log4j日志
private static Logger log = Logger.getLogger(TimeInterceptor.class);
new
//利用ThreadLocal绑定一个变量,完成线程安全 NamedThreadLocal
}
long startTime = System.currentTimeMillis(); startTimeThreadLocal.set(startTime);
return true;
//记录当前时间 //绑定变量
//处理类之后,执行postHandler方法
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { long stopTime = System.currentTimeMillis(); //记录结束时间 log.info(String.format(\ ,request.getRequestURI() , stopTime - startTimeThreadLocal.get())); }
27
//所有的动作完成,执行一些方法 @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub } }
sprimgmvc-servlet.xml中配置
4. 项目中使用Log4j a) 导入jar包
b) 配置log4j.properties
log4j.rootLogger=DEBUG, stdout
配置日志级别 OFF,FANIL,ERROR,WARN,INFO,DEBUG,TRACE,ALL 提供8个级别,log4j推荐开发者使用4个级别:
ERROR:错误信息,try,catch抛出异常,log.error(“”) ,WARN:警告信息 INFO:提示
DEBUG:BUG很多时候,监控过程变量,调试
顺序级别,级别由低到高,高级别的信息会包含打印低级别的信息。
Stout输出地点,包括:控制台,文件,数据库 log4j.rootLogger=DEBUG, stdout
#Console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
28
共分享92篇相关文档