1 22 23 package org.jboss.aspects.asynchronous.aspects.jboss; 24 25 import org.jboss.logging.Logger; 26 import org.jboss.aop.joinpoint.MethodInvocation; 27 28 import java.text.SimpleDateFormat ; 29 import java.util.Date ; 30 31 35 36 public class TraceThreadAspect 37 { 38 39 static private final Logger log = Logger.getLogger(TraceThreadAspect.class); 40 41 static private SimpleDateFormat formatter = 42 43 new SimpleDateFormat ("hh:mm:ss:SSS aaa z"); 44 45 public TraceThreadAspect() {} 46 47 public Object trace(MethodInvocation methodInvocation) throws Throwable 48 { 49 50 String className = null; 51 52 if (methodInvocation.getTargetObject() != null) 53 54 className = methodInvocation.getTargetObject().getClass().getName(); 55 56 else 57 58 className = methodInvocation.getMethod().getDeclaringClass().getName(); 59 60 StringBuffer txt = 61 62 new StringBuffer (Thread.currentThread().toString()) 63 64 .append(" ") 65 66 .append(methodInvocation.getMethod().getReturnType().getName()) 67 68 .append(" ") 69 70 .append(className) 71 72 .append(".") 73 74 .append(methodInvocation.getMethod().getName()) 75 76 .append("("); 77 78 Class [] parameterTypes = 79 80 methodInvocation.getActualMethod().getParameterTypes(); 81 82 for (int i = 0; i < parameterTypes.length; i++) 83 { 84 85 txt.append(parameterTypes[i].getName()); 86 87 if (i + 1 < parameterTypes.length) 88 89 txt.append(","); 90 91 } 92 93 txt.append(")"); 94 95 log.info(new StringBuffer ("TRACE ENTER: ").append(getCurrentDate()).append(" ").append(txt)); 96 97 Object rsp = methodInvocation.invokeNext(); 98 99 log.info(new StringBuffer ("TRACE EXIT: ").append(getCurrentDate()).append(" ").append(txt)); 100 101 return rsp; 102 103 } 104 105 static public String getCurrentDate() 106 { 107 108 return formatter.format(new Date (System.currentTimeMillis())); 109 110 } 111 112 } 113 | Popular Tags |