fix stacktrace logging

This commit is contained in:
risk danger olson 2016-08-19 12:30:53 -06:00
parent b42fa38e31
commit 8624a87328
2 changed files with 22 additions and 1 deletions

@ -256,7 +256,11 @@ func logPanicToWriter(w io.Writer, loggedError error) {
w.Write(ErrorBuffer.Bytes())
fmt.Fprintln(w)
fmt.Fprintf(w, "%+v\n", loggedError)
fmt.Fprintf(w, "%s\n", loggedError)
for _, stackline := range errors.StackTrace(loggedError) {
fmt.Fprintln(w, stackline)
}
for key, val := range errors.ErrorContext(err) {
fmt.Fprintf(w, "%s=%v\n", key, val)
}

@ -83,3 +83,20 @@ func Wrapf(err error, format string, args ...interface{}) error {
return newWrappedError(err, message)
}
func StackTrace(err error) []string {
type stacktrace interface {
StackTrace() errors.StackTrace
}
if err, ok := err.(stacktrace); ok {
frames := err.StackTrace()
lines := make([]string, len(frames))
for i, f := range frames {
lines[i] = fmt.Sprintf("%+v", f)
}
return lines
}
return nil
}