Как насчет groovy's StackTraceUtils.sanitize? Вот быстрый пример:
import org.codehaus.groovy.runtime.StackTraceUtils
class A {
def methodX() {
methodY()
}
def methodY() {
methodZ()
}
def methodZ() {
def marker = new Throwable()
StackTraceUtils.sanitize(marker).stackTrace.eachWithIndex { e, i ->
println "> $i ${e.toString().padRight(30)} ${e.methodName}"
}
}
}
new A().methodX()
Вывод вышеперечисленного при вставке в автономный скрипт test.groovy
выглядит следующим образом:
$ groovy test.groovy
> 0 A.methodZ(test.groovy:13) methodZ
> 1 A.methodY(test.groovy:9) methodY
> 2 A.methodX(test.groovy:5) methodX
> 3 A$methodX.call(Unknown Source) call
> 4 test.run(test.groovy:21) run
метод sanitize отфильтровывает все отличные внутренние mumbo jumbo от трассы, и чистая трасса вместе с ...stackTrace.find { }
должна дать вам достойное начало.