编写切面日志

来源:互联网 发布:php编辑器代码 编辑:程序博客网 时间:2024/06/06 03:31

编写切面日志

 

项目上线,我被派去部署项目,在项目部署时,log成为了我的块心病。因为项目方法执行较多,一直输出DEBUG,实在受不了了,我把级别调高了。但是我们组长说优化一下项目日志吧,我就开始苦B的学习怎么写切面日志了。我是一只大四实习狗,从学校一出来感觉什么都是新鲜的东西,什么都得学,但是很充实。

一说切面日志,就得谈一谈Aop,详谈Aop就要从动态代理说了,那什么是动态代理那,顾名思义就是灵活的替代做某件事。我读过一篇博文讲的很形象,用一场相亲讲述了动态代理的用途。

我们正常相亲是自己想找一个什么样子的对象,然后按照这个标准自己开始四处撒网了。但是有动态代理后,这个相当于一个婚姻介绍所,你把心中理想的目标的要求提出了,交给介绍所,剩下的等电话来相亲就好了,不用亲力亲为。

这样我们在说一下Aop,给大家推荐一篇文章,更有助于Aop的理解:http://blog.csdn.net/haluoluo211/article/details/52046937

理解aop后,开始正菜了。

首先需要引入logjar

<!-- 日志处理 -->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

</dependency>

在spring配置文件里配置切面:

<aop:aspectj-autoproxy proxy-target-class="true">

<aop:include name="logAspect" />

</aop:aspectj-autoproxy>

<bean id="logAspect切面类名" class="com.common.utils.LogAspect切面路径" />

编写日志切面

import org.apache.log4j.Logger;

import org.aspectj.lang.ProceedingJoinPoint;

import org.aspectj.lang.annotation.Around;

import org.aspectj.lang.annotation.Aspect;

/**

 * 日志切面类

 *

 */

@Aspect

public class LogAspect {

private static Logger_log = Logger.getLogger(LogAspect.class);

@Around("execution(* *..controller..*.*(..))")

public Object doAround(ProceedingJoinPointpjp) throws Throwable {

Long startTime = System.currentTimeMillis();

Object result = pjp.proceed();

Long endTime = System.currentTimeMillis();

_log.info("正在执行" +pjp.getSignature().toShortString() + ", 方法耗时为" + (endTime - startTime) / 1000 + "秒");

return result;

}

 

}

基本上完成了面向切面的全过程

原创粉丝点击