Recursively call the relevant getCause() method on the Throwable. http://logback.qos.ch/apidocs/ch/qos/logback/classic/spi/LoggingEvent.html#getThrowableProxy() https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/LoggingEvent.html#getThrowableInformation() http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html - good multi exception example too for tests