在java

时间:2016-10-10 23:01:35

标签: java multithreading debugging logging

我正在尝试创建一个java类,它将记录多线程java程序的方法调用我已经有了它可以将信息保存到桌面文件的部分,但我还没有设法找到一种方法来获取方法调用。我尝试使用Runtime.getRuntime()。traceMethodCalls(true)并使用Thread.getAllStackTraces()。values()并循环遍历StackTraceElement。 访问https://github.com/NamelessSuperCoder/Class-Debugging.git查看我当前的代码。请告诉我应该做些什么来改进以及如何使我的课程有效。

2 个答案:

答案 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");
    }


}

可能是一种更优雅的方式,但这应该有用。

相关问题