Seems like a fairly straight forward problem, but I\'d like to log a stack trace when my top level error handler in Scalatra is triggered. I\'m intentionally throwing an excepti
This question has several ways to convert an exception stack trace to a String. printStackTrace outputs to System.err unless you provide a writer.
If you use the standard logger: com.typesafe.scalalogging.Logger , the logger prints the stack trace for you.
You can just use it this way:
import com.typesafe.scalalogging.Logger
import org.slf4j.LoggerFactory
try {
throw new Exception("test message")
} catch {
case e:Exception => logger.error("Exception " , e)
}
There is already an overload which is accepting 2 parameters, String and Throwable.
I think you want printStackTrace()
rather than getStackTrace
. If you are outputting to a log file, getMessage()
may be helpful. Or you may try passing the whole exception object to the logger.
Use ExceptionUtils from Apache Commons Lang:
import org.apache.commons.lang3.exception.ExceptionUtils
(...)
logger.info("an exception occurred: " + ExceptionUtils.getStackTrace(e))