Files

58 lines
1.1 KiB
Go
Raw Permalink Normal View History

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()
}
}