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" class="com.ext.LoggingAdvice"></bean>
<!-- 配置那些类的方法进行事务管理 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression=通配符 />
<aop:pointcut id="allActionMethod" expression=通配符/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" />
<aop:advisor advice-ref="log" pointcut-ref="allManagerMethod" />
<aop:advisor advice-ref="log" pointcut-ref="allActionMethod" />
</aop:config>