-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfield.go
120 lines (92 loc) · 2.39 KB
/
field.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package logbus
import (
"fmt"
"strings"
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type Field = zap.Field
const defaultMaskN = 3
func maskN(val string, n int) string {
// 如果字符串长度小于等于 3*n,返回等长的掩码
if len(val) <= 3*n {
return strings.Repeat("*", len(val))
}
return val[:n] + strings.Repeat("*", len(val)-2*n) + val[len(val)-n:]
}
// MaskString 隐藏字符串中间的字符,只显示开头和结尾的字符,可指定收尾掩码长度,如果字符串长度小于等于 3*n[0]则使用等长掩码
func MaskString(key string, val string, n ...int) Field {
keep := defaultMaskN
if len(n) != 0 {
keep = n[0]
}
return zap.String(key, maskN(val, keep))
}
// Password 使用等长掩码替代
func Password(key string, val string) Field {
return zap.String(key, strings.Repeat("*", len(val)))
}
func String(key string, val string) Field {
return zap.String(key, val)
}
func Binary(key string, val []byte) Field {
return zap.Binary(key, val)
}
func Bool(key string, val bool) Field {
return zap.Bool(key, val)
}
func Float64(key string, val float64) Field {
return zap.Float64(key, val)
}
func Float32(key string, val float32) Field {
return zap.Float32(key, val)
}
func Int(key string, val int) Field {
return zap.Int(key, val)
}
func Int64(key string, val int64) Field {
return zap.Int64(key, val)
}
func Int32(key string, val int32) Field {
return zap.Int32(key, val)
}
func Uint(key string, val uint) Field {
return zap.Uint(key, val)
}
func Uint64(key string, val uint64) Field {
return zap.Uint64(key, val)
}
func Uint32(key string, val uint32) Field {
return zap.Uint32(key, val)
}
func Uint16(key string, val uint16) Field {
return zap.Uint16(key, val)
}
func Uint8(key string, val uint8) Field {
return zap.Uint8(key, val)
}
func Reflect(key string, val interface{}) Field {
return zap.Reflect(key, val)
}
func Stringer(key string, val fmt.Stringer) Field {
return zap.Stringer(key, val)
}
func Time(key string, val time.Time) Field {
return zap.Time(key, val)
}
func Stack(key string) Field {
return zap.Stack(key)
}
func Duration(key string, val time.Duration) Field {
return zap.Duration(key, val)
}
func Object(key string, val zapcore.ObjectMarshaler) Field {
return zap.Object(key, val)
}
func ErrorField(err error) Field {
return zap.Error(err)
}
func Any(key string, value interface{}) Field {
return zap.Any(key, value)
}