pkg/util/recover/recover.go (18 lines of code) (raw):
package recover
// Copyright (c) Microsoft Corporation.
// Licensed under the Apache License 2.0.
import (
"fmt"
"os"
"runtime/debug"
"github.com/sirupsen/logrus"
)
// Panic recovers a panic
func Panic(log *logrus.Entry) {
if e := recover(); e != nil {
if log != nil {
log.Error(e)
log.Info(string(debug.Stack()))
} else {
fmt.Fprintln(os.Stderr, e)
debug.PrintStack()
}
}
}