我正在尝试创建一个java类,它将记录多线程java程序的方法调用我已经有了它可以将信息保存到桌面文件的部分,但我还没有设法找到一种方法来获取方法调用。我尝试使用Runtime.getRuntime()。traceMethodCalls(true)并使用Thread.getAllStackTraces()。values()并循环遍历StackTraceElement。 访问https://github.com/NamelessSuperCoder/Class-Debugging.git查看我当前的代码。请告诉我应该做些什么来改进以及如何使我的课程有效。
答案 0 :(得分:1)
可能无法记录所有方法调用,而无需按字面编写日志语句,每种方法或没有外部工具。实现该任务的最简单方法可能是使用AspectJ等工具进行面向方面编程。事实上,我甚至发现了一篇关于如何做到这一点的文章http://www.yegor256.com/2014/06/01/aop-aspectj-java-method-logging.html。您可以使用所有类的代理构建自己的工具。
答案 1 :(得分:0)
在您的其他课程中引用您的日志记录类。将日志记录类设置为单例,因此只有一个实例。给它一些接受字符串放入日志的方法,然后在日志类中调用你的其他类的方法'方法...
class Logger {
static addLogEntry(String logEntry) {
// some method to add log entry to your log
}
}
class Foo {
Logger aLogger;
public Foo() {
// get your singleton Logger instance
aLogger = getLogger();
}
public void someMethodInThisClass() {
aLogger.addLogEntry("in someMethodInSomeClass");
}
}
可能是一种更优雅的方式,但这应该有用。