-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathlogger_test.go
84 lines (72 loc) · 1.87 KB
/
logger_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package gone
import (
"bytes"
"fmt"
"log"
"os"
"strings"
"testing"
)
func TestGetDefaultLogger(t *testing.T) {
logger := GetDefaultLogger()
if logger == nil {
t.Error("GetDefaultLogger() should not return nil")
}
}
func TestLoggerLevels(t *testing.T) {
logger := GetDefaultLogger()
tests := []struct {
level LoggerLevel
levelName string
}{
{DebugLevel, "debug"},
{InfoLevel, "info"},
{WarnLevel, "warn"},
{ErrorLevel, "error"},
}
for _, tt := range tests {
t.Run(tt.levelName, func(t *testing.T) {
logger.SetLevel(tt.level)
if logger.GetLevel() != tt.level {
t.Errorf("SetLevel(%v) failed, got %v", tt.level, logger.GetLevel())
}
})
}
}
func TestLogOutput(t *testing.T) {
// 捕获日志输出
var buf bytes.Buffer
log.SetOutput(&buf)
defer log.SetOutput(os.Stderr) // 测试结束后恢复默认输出
logger := GetDefaultLogger()
tests := []struct {
level LoggerLevel
logFunc func(string, ...any)
message string
shouldLog bool
}{
{InfoLevel, logger.Debugf, "debug message", false},
{InfoLevel, logger.Infof, "info message", true},
{InfoLevel, logger.Warnf, "warn message", true},
{InfoLevel, logger.Errorf, "error message", true},
{ErrorLevel, logger.Debugf, "debug message", false},
{ErrorLevel, logger.Infof, "info message", false},
{ErrorLevel, logger.Warnf, "warn message", false},
{ErrorLevel, logger.Errorf, "error message", true},
}
for _, tt := range tests {
t.Run(fmt.Sprint(tt.level), func(t *testing.T) {
buf.Reset()
logger.SetLevel(tt.level)
tt.logFunc(tt.message)
output := buf.String()
hasMessage := strings.Contains(output, tt.message)
if tt.shouldLog && !hasMessage {
t.Errorf("expected message %q to be logged, but it wasn't", tt.message)
}
if !tt.shouldLog && hasMessage {
t.Errorf("expected message %q not to be logged, but it was", tt.message)
}
})
}
}