java printstacktrace_关于java:在printStackTrace()上打印完整的调用堆栈?

这篇博客探讨了如何在Java中获取完整的堆栈跟踪信息,尤其是当异常由第三方库引发并记录在日志中时。作者遇到了printStackTrace()方法只显示部分堆栈的问题,并讨论了可能的解决方案,包括使用Thread.currentThread().getStackTrace()和Apache Commons Lang的ExceptionsUtils类。此外,还提到了Java虚拟机在某些情况下可能忽略堆栈帧的情况。
摘要由CSDN通过智能技术生成

我需要编写一个小的日志分析器应用程序来处理由我的项目中使用的第三方封闭源库(内部具有自定义记录器)生成的一些日志文件。

如果日志中有异常条目,我需要从堆栈顶部到异常的实际位置收集有关堆栈跟踪中所涉及方法的汇总信息。

不幸的是,默认情况下,Java printStackTrace()不会打印调用堆栈中的每个方法,但是最多可以打印一个特定的数目,其余的仅被引用为16 more...。

如果我自己可以捕获到该异常,则可以使用getStackTrace()并自己打印该异常,但是根本不会在该库引发的异常中包含根本原因。

有没有办法让Java在stacktrace中打印整个调用堆栈?

除了我的情况,通用的日志记录框架还可以选择吗?

编辑:该程序在带有JDK 1.5.0_09的Sun JVM上运行。 没有选择来改变它。

我如何停止堆栈跟踪在日志中截断的可能重复项

这是对打印迹线中"由...引起的"和" ...更多"行的说明。 另请参阅用于printStackTrace的JavaDoc。 您可能没有任何工作要做。

Note the presence of lines containing the characters"...". These lines indicate that the remainder of the stack trace for this exception matches the indicated number of frames from the bottom of the stack trace of the exception that was caused by this exception (the"enclosing" exception). This shorthand can greatly re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值