Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cleaning noise out of Java stack traces

My Java stack traces have a lot of entries that I don't care about, showing method invocation going through proxies and Spring reflection methods and stuff like that. It can make it pretty hard to pick out the part of the stack trace that's actually from my code. Ruby on Rails includes a "stack trace cleaner" where you can specify a list of stack trace patterns to omit from printed stack traces - what's the best way to do something like that, universally, for Java?

It'd be best if this worked everywhere, including in the Eclipse jUnit runner.

like image 271
bhollis Avatar asked Mar 07 '12 17:03

bhollis


2 Answers

intellij-idea allows customizable stack trace folding, especially useful with dynamic languages.

IntelliJ
(source: jetbrains.com)

and an Analyzing external stack traces tool.

I can imagine general tool/filter working on logging framework (like logback or log4j) level. I don't think there is any general support for that, but I think it is a great idea to implement this. I will have a look, maybe it is not that much work.

UPDATE: I implemented filtering irrelevant stack trace lines in logs for logback, also follow LBCLASSIC-325.

like image 181
Tomasz Nurkiewicz Avatar answered Oct 11 '22 14:10

Tomasz Nurkiewicz


eclipse has a preference Stack trace filter patterns (look at java > junit or search for stacktrace in the preferences). You can ignore packages (also with wildcards), classes or methods. Does work for direct Test calls (via Run as junit Test), not for commandline runs like ant or maven.

like image 40
Arne Burmeister Avatar answered Oct 11 '22 14:10

Arne Burmeister