diff --git a/util/panic.go b/util/panic.go new file mode 100644 index 0000000..0dadb4a --- /dev/null +++ b/util/panic.go @@ -0,0 +1,30 @@ +package util + +import ( + "encoding/json" + "runtime/debug" + "strings" + + "github.com/sirupsen/logrus" +) + +var panicLogger *logrus.Logger + +func SetPanicLogger(logger *logrus.Logger) { + panicLogger = logger +} + +func HandlePanic() { + logger := panicLogger + if logger != nil { + if rerr := recover(); rerr != nil { + stack := debug.Stack() + jsonStack, err := json.Marshal(strings.Split(string(stack), "\n")) + if err != nil { + jsonStack = stack + } + logger.Errorf("Ruh roh. A panic has occurred: %v, trace: %s", rerr, string(jsonStack)) + panic(rerr) + } + } +} diff --git a/version/version.go b/version/version.go index b259b04..093c9ba 100644 --- a/version/version.go +++ b/version/version.go @@ -1,5 +1,5 @@ package version const ( - APP_VERSION = "1.0.1" + APP_VERSION = "1.0.2" )