在日志记录系统中,每个日志输出都由辅助类完成,并使用此方法
public void debug(String message) {
Logger logger = Logger.getLogger(getCallingClass());
logger.debug(message);
}
...
public Class getCallingClass() {
/*
Calls Thread.getStackTrace() and back traces until the class on the stack trace
!= this.getClass().
*/
return classFound;
}
Run Code Online (Sandbox Code Playgroud)
它的运行成本有多高,是否会有显着的性能提升?
我正在研究非常庞大的基于Java web的应用程序.由于在开发过程中没有进行适当的日志记录,因此我很难设置断点并调试应用程序,因为我不知道执行顺序.在执行某些操作后,是否有任何机制可以获取正在运行的java应用程序的完整Call Stack.
我在网上搜索了很长时间,但无法找到具体的解决方案.如果有什么东西请建议我.谢谢
有这个方法
public void foo(){
//..
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在运行时获取methodName(在本例中为foo)?
我知道如何获得classname
this.getClass().的getName()
或者通过Method[] methods = this.getClass().getMethods();
方法名称获取所有公共方法
一旦参数也很重要,因为可能有多个具有相同名称的方法
我有三个名为的课程FirstClass,SecondClass and ThirdClass.以下是三个类的来源:
FirstClass.java
public class FirstClass {
public void firstMethod(){
SecondClass secondClass = new SecondClass();
secondClass.secondMethod();
}
public static void main(String[] args) {
FirstClass firstClass = new FirstClass();
firstClass.firstMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
SecondClass.java
public class SecondClass {
public void secondMethod(){
ThirdClass thirdClass = new ThirdClass();
thirdClass.thirdMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
ThirdClass.java
public class ThirdClass {
public void thirdMethod(){
System.out.println("Here i need to print where the call comes from,(call hierarchy) Is it possible?");
}
}
Run Code Online (Sandbox Code Playgroud)
在最后的方法(这里是ThirdClass.thirdMethod())我需要打印方法调用来自哪里(我的意思是调用层次结构).所以我需要写在thirdMethod()该