采用以下一种(或多种)方法:
查看struts.xml,了解配置元素(特别Actions和methods)如何映射以及如何在编译时重现应用程序的行为.
编写一个Interceptor记录(或保存某处)在Stack中传递的所有Actions和方法的名称,从请求中读取它们;
实现Preparable Interface并从prepare()方法中执行请求记录;
动态获取类名和方法名
Thread.currentThread().getStackTrace()[level].getMethodName();
Run Code Online (Sandbox Code Playgroud)
根据应用程序的结构,您可以选择将此行的调用"放在某处",以记录所有调用的类名和方法.
我建议你这个实现,它解决了你的深度问题:
public class Utilities {
public static String getCurrentMethod() {
return getCurrentMethodNameFromThread(0);
}
public static String getCallingMethodName() {
return getCurrentMethodNameFromThread(1);
}
private static String getCurrentMethodNameFromThread(int stackLevel) {
/*
* 0 - dumpThreads
* 1 - getStackTrace
* 2 - thisMethod => getCurrentMethodNameFromThread
* 3 - callingMethod => method calling thisMethod
* 4 - method calling callingMethod
*/
StackTraceElement
stackTraceElement =
Thread.currentThread().getStackTrace()[4 + stackLevel];
String className = stackTraceElement.getClassName();
String methodName = stackTraceElement.getMethodName();
return className + "." + methodName;
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |