可能重复:
How do I in java add a stacktrace to my debugging printout
当没有异常时,在 log4j 的输出中包含堆栈跟踪的最佳方法是什么?我能想到的唯一方法是创建一个新的Exception
实例。
log.error("description", new Exception());
后续行动:我完全了解Thread.currentThread().getStackTrace()
和Thread.dumpStack()
。这些输出到控制台,在许多环境中都与log4j输出分开。我正在寻找一种方法将堆栈跟踪记录到log4j,而不是控制台。
答案 0 :(得分:-1)
currentThread()
静态方法获取它,然后获取堆栈跟踪。类似的东西:
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
如果要转储所有正在运行的线程的堆栈跟踪,可以使用Thread类的getAllStackTraces()
静态方法。
Map<Thread,StackTraceElement[]> stackTraces = Thread.getAllStackTraces();
<强>更新强>
Steve,我尝试了Thread类的dumpStack()
静态方法,它使用一个空的exeption来执行转储,因此,我认为你的方式是正确的,或者是“最好的方式”。 / p>