fix: 修复服务器消息报错不打印堆栈信息的问题

This commit is contained in:
kercylan98 2023-07-12 19:14:51 +08:00
parent b5a4bc959d
commit aa39d39160
1 changed files with 7 additions and 2 deletions

View File

@ -20,6 +20,7 @@ import (
"net/http" "net/http"
"os" "os"
"os/signal" "os/signal"
"runtime/debug"
"strings" "strings"
"sync/atomic" "sync/atomic"
"syscall" "syscall"
@ -499,7 +500,9 @@ func (slf *Server) dispatchMessage(msg *Message) {
present := time.Now() present := time.Now()
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
log.Error("Server", zap.String("MessageType", messageNames[msg.t]), zap.Any("MessageAttrs", msg.attrs), zap.Any("error", err), zap.Stack("stack")) stack := string(debug.Stack())
log.Error("Server", zap.String("MessageType", messageNames[msg.t]), zap.Any("MessageAttrs", msg.attrs), zap.Any("error", err), zap.String("stack", stack))
fmt.Println(stack)
if e, ok := err.(error); ok { if e, ok := err.(error); ok {
slf.OnMessageErrorEvent(msg, e) slf.OnMessageErrorEvent(msg, e)
} }
@ -543,7 +546,9 @@ func (slf *Server) dispatchMessage(msg *Message) {
if err := slf.ants.Submit(func() { if err := slf.ants.Submit(func() {
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
log.Error("Server", zap.String("MessageType", messageNames[msg.t]), zap.Any("error", err), zap.Stack("stack")) stack := string(debug.Stack())
log.Error("Server", zap.String("MessageType", messageNames[msg.t]), zap.Any("error", err), zap.String("stack", stack))
fmt.Println(stack)
if e, ok := err.(error); ok { if e, ok := err.(error); ok {
slf.OnMessageErrorEvent(msg, e) slf.OnMessageErrorEvent(msg, e)
} }