发表于: 2017-09-24 20:58:19
1 808
今天完成的事情:
1.学习springAOP,并使用AOP输出数据库的响应时间
项目结构
多写了个DatabaseLogger
Spring上下文配置
<aop:config>
<aop:aspect ref="DatabaseLogger">
<aop:before method="beforeTime" pointcut="execution(* cn.summerwaves.service.imp..*(..))"/>
<aop:after method="afterTime" pointcut="execution(* cn.summerwaves.service.imp..*(..))"/>
</aop:aspect>
</aop:config>
或者
<!--<aop:aspectj-autoproxy proxy-target-class="true" />-->
皆可(只限记录数据库,控制器的记录还没测试)
DatabaseLogger代码
@Aspect
public class DatabaseLogger {
long start;
long end;
private static Logger logger = Logger.getLogger("DatabaseLogger.class");
public DatabaseLogger() {}
/* imp包下所有的Service中所有的方法都会在依次在前、后添加下面的两个方法 */
@Pointcut("execution(* cn.summerwaves.service.imp..*(..))")
public void databasepoint() {
}
@Before("databasepoint()")
public void beforeTime() {
start=System.currentTimeMillis();
}
@After("databasepoint()")
public void afterTime() {
end = System.currentTimeMillis();
logger.error("数据库的响应时间为: "+(end-start));
}
}
AOP好像很神奇,除了用以输出日志,好像还能用来干一些奇奇怪怪的东西
添加一个error级别的Logger:
#error级别
log4j.appender.ERROR = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ERROR.File = /data/tomcat-home/ROOT/error.log
log4j.appender.ERROR.Append = true
log4j.appender.ERROR.Threshold = ERROR
log4j.appender.ERROR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERROR.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
访问网页后输出如下
2.向网站重新部署了war包,但是tomcat部署到除了webapps以外的地方无法生效,之前使用的方法也失效了,查方法查了很久,得到了可以使用的方法
①删除webapps下root的所有内容
②在tomcat/conf/Catalina/localhost/下新建ROOT.xml文件,内容如下
<?xml version='1.0' encoding='utf-8'?>
<Context path="/" docBase="/data/tomcat-home/ROOT/" debug="0" privileged="true" reloadable="true"/>
明天计划的事情:
1.学习脚本分析自己输出的日志和nginx日志
2.提交任务3
3.做完任务3还有时间的话回头做一下任务2的深度思考
遇到的问题:
部署war包后无法访问,之前的方法失效,尝试寻找新的方法
方法如“今日所做的事情2”所示
收获:
1.学会使用SpringAOP记录某个方法的响应时间并输出
2.找到了可靠的修改tomcat部署目录的方法
进度:
任务3开始时间:2017.09.23
预计demo时间:2017.09.24
已延期至2017.09.25
延期风险:无
禅道
http://task.ptteng.com/zentao/project-task-350.html
评论