58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
|
|
package logger
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"os"
|
|||
|
|
|
|||
|
|
"go.uber.org/zap"
|
|||
|
|
"go.uber.org/zap/zapcore"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// Log 是全局 SugaredLogger,由 Init 初始化。
|
|||
|
|
var Log *zap.SugaredLogger
|
|||
|
|
|
|||
|
|
// Init 初始化全局日志器。
|
|||
|
|
// level: "debug", "info", "warn", "error"
|
|||
|
|
// format: "json" 或 "console"
|
|||
|
|
func Init(level, format string) {
|
|||
|
|
var lvl zapcore.Level
|
|||
|
|
switch level {
|
|||
|
|
case "debug":
|
|||
|
|
lvl = zapcore.DebugLevel
|
|||
|
|
case "warn":
|
|||
|
|
lvl = zapcore.WarnLevel
|
|||
|
|
case "error":
|
|||
|
|
lvl = zapcore.ErrorLevel
|
|||
|
|
default:
|
|||
|
|
lvl = zapcore.InfoLevel
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
encoderCfg := zap.NewProductionEncoderConfig()
|
|||
|
|
encoderCfg.TimeKey = "ts"
|
|||
|
|
encoderCfg.EncodeTime = zapcore.ISO8601TimeEncoder
|
|||
|
|
|
|||
|
|
var core zapcore.Core
|
|||
|
|
if format == "console" {
|
|||
|
|
core = zapcore.NewCore(
|
|||
|
|
zapcore.NewConsoleEncoder(encoderCfg),
|
|||
|
|
zapcore.AddSync(os.Stdout),
|
|||
|
|
lvl,
|
|||
|
|
)
|
|||
|
|
} else {
|
|||
|
|
core = zapcore.NewCore(
|
|||
|
|
zapcore.NewJSONEncoder(encoderCfg),
|
|||
|
|
zapcore.AddSync(os.Stdout),
|
|||
|
|
lvl,
|
|||
|
|
)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
logger := zap.New(core, zap.AddCaller(), zap.AddStacktrace(zapcore.ErrorLevel))
|
|||
|
|
Log = logger.Sugar()
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Sync 刷新缓冲区,退出前调用。
|
|||
|
|
func Sync() {
|
|||
|
|
if Log != nil {
|
|||
|
|
_ = Log.Sync()
|
|||
|
|
}
|
|||
|
|
}
|