332c2414bc
- WebConnectLog 访问日志新增 ua 字段(User-Agent 按 rune 截断 200 字符),便于按设备归因 - SetSeqWriter 挂 Seq 后业务控制台由 Warn+ 放宽为 Info+,Debug/SQL 仍只进 Seq 与文件 - 新增 Logger.SetConsoleMinLevel,访问日志控制台单独保持 Warn+ Co-authored-by: Cursor <cursoragent@cursor.com>
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package hotime
|
|
|
|
import "testing"
|
|
|
|
func TestTruncateUA_ShortUnchanged(t *testing.T) {
|
|
ua := "Mozilla/5.0 (Test)"
|
|
if got := truncateUA(ua, 200); got != ua {
|
|
t.Fatalf("短串不应被截断: got=%q want=%q", got, ua)
|
|
}
|
|
}
|
|
|
|
func TestTruncateUA_LongTruncatedTo200(t *testing.T) {
|
|
long := ""
|
|
for i := 0; i < 300; i++ {
|
|
long += "a"
|
|
}
|
|
got := truncateUA(long, 200)
|
|
if len([]rune(got)) != 200 {
|
|
t.Fatalf("截断后长度=%d want 200", len([]rune(got)))
|
|
}
|
|
if got != long[:200] {
|
|
t.Fatalf("ASCII 截断内容不符: got=%q", got)
|
|
}
|
|
}
|
|
|
|
func TestTruncateUA_MultiByteNotBroken(t *testing.T) {
|
|
// 前 199 个 ASCII + 1 个多字节字符("中"占 3 字节),max=200 时应完整保留该 rune 而非切碎字节
|
|
prefix := ""
|
|
for i := 0; i < 199; i++ {
|
|
prefix += "a"
|
|
}
|
|
long := prefix + "中" + "extra-should-be-cut"
|
|
got := truncateUA(long, 200)
|
|
runes := []rune(got)
|
|
if len(runes) != 200 {
|
|
t.Fatalf("按 rune 截断后应为 200 个字符, got=%d (%q)", len(runes), got)
|
|
}
|
|
if runes[199] != '中' {
|
|
t.Fatalf("第 200 个字符应为完整的 '中',实际=%q", string(runes[199]))
|
|
}
|
|
}
|