Files
hfb_sys/backend/internal/database/gorm_logger_test.go
T
yml2213 88d74aca7d 重构日志与可观测性体系
新增单行文本编码器与结构化 GORM 日志,统一错误记录与请求日志策略,收紧日志文件权限并修复按天切分与压缩,支付回调参数脱敏,生产强制阿里云短信,RequestID 校验防注入,日志文案中文化。
2026-07-29 16:19:35 +08:00

49 lines
1.0 KiB
Go

package database
import (
"strings"
"testing"
"go.uber.org/zap"
"go.uber.org/zap/zaptest/observer"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func TestGormLoggerDoesNotLogQueryParameters(t *testing.T) {
core, observed := observer.New(zap.DebugLevel)
logger := zap.New(core)
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{
Logger: newGormLogger("debug", logger),
})
if err != nil {
t.Fatal(err)
}
type secretRecord struct {
ID uint64
Phone string
}
if err := db.AutoMigrate(&secretRecord{}); err != nil {
t.Fatal(err)
}
const secretPhone = "13812345678"
if err := db.Create(&secretRecord{Phone: secretPhone}).Error; err != nil {
t.Fatal(err)
}
for _, entry := range observed.All() {
for _, value := range entry.ContextMap() {
if strings.Contains(valueString(value), secretPhone) {
t.Fatalf("query parameter leaked into log: %v", entry.ContextMap())
}
}
}
}
func valueString(value any) string {
if text, ok := value.(string); ok {
return text
}
return ""
}