golang使用iris框架全局异常捕获

时间:2025-02-24 14:09:52

思路:通过设置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)