思路:通过设置recover可以实现异常自动回复功能,那么我们可以通过自定义recover去实现日志信息的返回
/**
* @Description: 错误信息处理
* @Author: guoyzh
* @Date: 2019/10/23
*/
func customRecover(ctx ) {
defer func() {
if err := recover(); err != nil {
if () {
return
}
var stacktrace string
for i := 1; ; i++ {
_, f, l, got := (i)
if !got {
break
}
stacktrace += ("%s:%d\n", f, l)
}
errMsg := ("错误信息: %s", err)
// when stack finishes
logMessage := ("从错误中回复:('%s')\n", ())
logMessage += errMsg + "\n"
logMessage += ("\n%s", stacktrace)
// 打印错误日志
().Logger().Warn(logMessage)
// 返回错误信息
((serverErrorCode, errMsg))
(serverErrorCode)
()
}
}()
()
}
使用自定义recover
(customRecover)