36 lines
945 B
Go
36 lines
945 B
Go
package config
|
|
|
|
import (
|
|
"errors"
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func TestLogFormatterPreservesStructuredEvidence(t *testing.T) {
|
|
formatter := &logFormatter{}
|
|
for _, message := range []string{"", "连接失败"} {
|
|
entry := &log.Entry{
|
|
Time: time.Now(), Level: log.InfoLevel, Message: message,
|
|
Caller: &runtime.Frame{File: "test.go", Line: 12},
|
|
Data: log.Fields{"error": errors.New("测试错误\n下一行"), "code": 0, "unsupported": make(chan int)},
|
|
}
|
|
data, err := formatter.Format(entry)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
text := string(data)
|
|
for _, expected := range []string{`"error":"测试错误\n下一行"`, `"code":0`, "无法序列化的字段", message} {
|
|
if !strings.Contains(text, expected) {
|
|
t.Fatalf("字段丢失:%s", text)
|
|
}
|
|
}
|
|
if strings.Count(text, "\n") != 1 {
|
|
t.Fatal("结构化错误中的换行不应生成伪记录")
|
|
}
|
|
}
|
|
}
|