相关疑难解决方法(0)

在printStackTrace()上打印完整的调用堆栈?

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

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

不幸的是,默认情况下,Java printStackTrace()不会打印调用堆栈中的每个方法,而是打印一定数量,其余的只是被引用为16 more....

如果我能自己捕获异常,我会使用getStackTrace()并自己打印,但根本原因从未包含在此库引发的异常中.

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

除了我的情况,常见的日志框架可以选择吗?

编辑:该程序在Sun的JVM上使用JDK 1.5.0_09运行.无法改变这一点.

java logging stack-trace

42
推荐指数
2
解决办法
6万
查看次数

Tomcat 应用程序日志未显示完整的堆栈跟踪

有一个在 Tomcat 上运行的 Web 应用程序。我使用 slf4j/logback 记录异常及其堆栈跟踪。例如

2017-08-01 00:00:00.000 [http-nio-80-exec-5] ERROR g.s.GuiceyRequestFactoryServlet - 'Server Failure'
java.lang.reflect.InvocationTargetException: null
...
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.33]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_131]
Caused by: ...
    ... 59 common frames omitted
Caused by: ...
    ... 64 common frames omitted
java.lang.NullPointerException: null
Run Code Online (Sandbox Code Playgroud)

因为导致 NPE 的真实位置嵌套在至少两个反射调用中,所以不确定是否是这种情况,Tomcat/slf4j/logback 不会显示完整的堆栈跟踪并在 NPE 处停止,而不是进一步向下。

我期待类似的东西

2017-08-01 00:00:00.000 [http-nio-80-exec-5] ERROR g.s.GuiceyRequestFactoryServlet - 'Server Failure'
java.lang.reflect.InvocationTargetException: null
...
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.33]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_131]
Caused by: ...
    ... 59 common frames omitted
Caused by: ...
    ... …
Run Code Online (Sandbox Code Playgroud)

java tomcat exception stack-trace

7
推荐指数
1
解决办法
3573
查看次数

标签 统计

java ×2

stack-trace ×2

exception ×1

logging ×1

tomcat ×1