关于AOP的日志记录功能

abrom01 2014-01-06 07:14:57
rt,请问大神们如何解决。要求用注解的方式,我现在已经写好切面,拦截了service层的每个方法,
@Aspect
@Component
public class Qiemian {
@Pointcut("execution (*service.impl.*(..))")//定义切入点 ..*.* 第一个*指的是 任何的返回类型的方法 的两个点 是指子包 第二个*是所有类 第三个*是指所有方法
private void anyMethod(){}//声明切入点
//point :点 Proceeding(继续) Join(连接) Point(点)
@Around("anyMethod()")//这一种是最适合权限空值。这一种环绕通知完全可以实现上面的所有通知的功能。
public Object HuanRaoTongZhi(ProceedingJoinPoint pjp) throws Throwable
{
Object result=null;

System.out.println("hello--------1");
try {
result=pjp.proceed();//这个pjp.proceed();方法如果不写,目标对象里的所有方法都不会执行。
} catch (Exception e) {
System.out.println("异常");
}

System.out.println("hello--------2");
return result;
}


}

例如在执行service中的方法之前会输出hello----------1,然后执行service中的方法,然后输出hello---------2,现在请问如何对service中的动作进行记录,Log相关类已经写好,在hello------2位置如何获得操作当前类的动作和相关信息,比如我添加了一个机构,然后又修改了,如何分别在数据库记录成增加机构,修改机构

小弟很是迷茫,希望大神们不吝赐教,最好有点详细的代码。
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
suciver 2014-01-07
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
假设楼主的Log类实例为log
没写好竟然提交了....

//getTarget获得代理的目标类对象,getSignature获得被代理方法的信息
String method=pjp.getTarget().getClass()+"."+pjp.getSignature().getName();
 try {
       result=pjp.proceed();
       log.info(method+" 方法执行成功");
  } catch (Exception e) {
     log.error(method+" 方法执行失败异常:"+e.getMessage());
 }
suciver 2014-01-07
  • 打赏
  • 举报
回复
假设楼主的Log类实例为log

 try {

       result=pjp.proceed();
       log.info(+"方法执行成功");
  } catch (Exception e) {
     log.error();
 }

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧