我需要编写一个小的日志分析器应用程序来处理由我的项目中使用的第三方封闭源库(内部具有自定义记录器)生成的一些日志文件。
如果日志中有异常条目,我需要从堆栈顶部到异常的实际位置收集有关堆栈跟踪中所涉及方法的汇总信息。
不幸的是,默认情况下,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