Srping AOP 处理日志
spring切面管理日志处理
?
java代码:
public class LoggingAdvice implements MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice{
?private Log log = LogFactory.getLog(this.getClass().getName());?
?
?/**
?? *@param method? 调用的方法?? 获得方法名的方法method.getName()
?? *@param args? 调用方法的参数列表
?? *@param target 目标对象
?**/
?public void before(Method method, Object[] args, Object target)
???throws Throwable {
??log.debug("目标:---"+target.getClass());
??log.debug("方法开始执行:---"+method.getName());
??log.debug("参数:---"+eachArgs(args));??
?}
?public void afterReturning(Object returnVal, Method method, Object[] args,
???Object target) throws Throwable {
??log.debug("方法成功执行:---"+method.getName());
??log.debug("返回值:---"+returnVal+"\n");
??
??
?}
?
?public void afterThrowing(Method method, Object[] args, Object target, Exception e) {
??log.error("方法执行异常:---"+method.getName());
??log.error("异常信息:---"+e+"\n");???
??? }
?
?//遍历object数组
?public String eachArgs(Object[] args){
??StringBuilder sb=new StringBuilder();
??for(int i=0;i<args.length;i++){
???sb.append(args[i]).append("\t");
??}
??return sb.toString();
?}
spring配置:
<!-- 配置loggingAdvice -->??
?<bean id="log" />??
??<aop:advisor advice-ref="log" pointcut-ref="allManagerMethod" />
??<aop:advisor advice-ref="log" pointcut-ref="allActionMethod" />
?</aop:config>