Как насчет того, чтобы вместо printStackTrace
вы звоните Throwable.getStackTrace()
, что возвращает StackTraceElement[]
? Вам все еще нужно проделать некоторую работу, чтобы поместить его в строку, но это, возможно, более чистое решение, чем взламывать строковые буферы и тому подобное.
Когда у вас есть StackTraceElement[]
, вы можете манипулировать этим. Возможно, макет, заданный printStackTrace
, не совсем подходит для того, для чего вы собираетесь его использовать, и что более явное форматирование, обеспечиваемое объектной моделью StackTraceElement
, дает вам больше контроля. В конце концов, именно это и было предусмотрено.