-
Notifications
You must be signed in to change notification settings - Fork 6
/
zap_impl.go
107 lines (90 loc) · 1.89 KB
/
zap_impl.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
package logger
import (
"time"
"go.uber.org/zap"
)
// myLogger 日志内部实现
var myLogger *zapLogger
// levelMapping 日志级别的映射关系
var levelMapping = levelMap()
// logLevel 日志级别
type logLevel int
const (
logDebug logLevel = iota
logInfo
logWarn
logErr
logOff
)
// InitLogger 初始化日志Logger
func InitLogger(level, projectName, logPath string, maxAge, rotationTime time.Duration) {
initZap(projectName, logPath, maxAge, rotationTime)
// 设置打印堆栈深度,设置日志级别
myLogger = &zapLogger{
slog: zap.L().WithOptions(zap.AddCallerSkip(2)).Sugar(),
level: levelMapping[level],
}
}
// levelMap 字符串和级别映射
func levelMap() map[string]logLevel {
return map[string]logLevel{
"debug": logDebug,
"info": logInfo,
"warn": logWarn,
"err": logErr,
"off": logOff,
}
}
// zapLogger 具体对内实现
type zapLogger struct {
slog *zap.SugaredLogger
level logLevel
}
// Debug log
func (z *zapLogger) Debug(v ...interface{}) {
if z.level <= logDebug {
z.slog.Debug(v...)
}
}
// Debugf log
func (z *zapLogger) Debugf(format string, v ...interface{}) {
if z.level <= logDebug {
z.slog.Debugf(format, v...)
}
}
// Info log
func (z *zapLogger) Info(v ...interface{}) {
if z.level <= logInfo {
z.slog.Info(v...)
}
}
// Infof log
func (z *zapLogger) Infof(format string, v ...interface{}) {
if z.level <= logInfo {
z.slog.Infof(format, v...)
}
}
// Warn log
func (z *zapLogger) Warn(v ...interface{}) {
if z.level <= logWarn {
z.slog.Warn(v...)
}
}
// Warnf log
func (z *zapLogger) Warnf(format string, v ...interface{}) {
if z.level <= logWarn {
z.slog.Warnf(format, v...)
}
}
// Error log
func (z *zapLogger) Error(v ...interface{}) {
if z.level <= logErr {
z.slog.Error(v...)
}
}
// Errorf log
func (z *zapLogger) Errorf(format string, v ...interface{}) {
if z.level <= logErr {
z.slog.Errorf(format, v)
}
}