Эх сурвалжийг харах

ConsoleWriter 模式(彩色控制台输出)时,Msg("...") 里的内容会作为“主 message”,而你自己加的 .Str("message", "...") 这个字段会被忽略或者压缩掉。
这是因为 ConsoleWriter 的默认实现就是:

fmt.Fprintf(out, "%s %s %s", Level, Timestamp, Message)

额外字段只会展示 key=value,但 key="message" 会和内部 message 字段冲突,导致它不会显示。

shizhongqi 10 сар өмнө
parent
commit
ca8d3067e8
2 өөрчлөгдсөн 2 нэмэгдсэн , 2 устгасан
  1. 1 1
      wsClient/redis.go
  2. 1 1
      wsClient/room.go

+ 1 - 1
wsClient/redis.go

@@ -331,7 +331,7 @@ func GetRoomMessages(roomName string, count int64) ([]ChatMessage, error) {
 		var msg ChatMessage
 		if err := json.Unmarshal([]byte(msgStr), &msg); err != nil {
 			// log.Printf("消息反序列化失败: %v", err)
-			log.Error().Err(err).Str("message", msgStr).Msg("消息反序列化失败")
+			log.Error().Err(err).Str("msg", msgStr).Msg("消息反序列化失败")
 			continue
 		}
 		messages = append(messages, msg)

+ 1 - 1
wsClient/room.go

@@ -139,7 +139,7 @@ func (r *Room) run() {
 				return // channel已关闭,退出goroutine
 			}
 			// 打印消息内容与发送者信息
-			log.Debug().Str("sender", msg.sender.name).Str("message", string(msg.content)).Msg("Received message")
+			log.Debug().Str("sender", msg.sender.name).Str("msg", string(msg.content)).Msg("Received message")
 
 			// 直接存储原始消息内容到Redis,使用房间名作为键
 			go StoreRawMessage(r.name, msg.content) // 异步存储,不阻塞消息转发