You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

56 lines
1.2 KiB

package zlog
import (
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var (
zLogger *zap.Logger
zSugar *zap.SugaredLogger
)
func init() {
// 默认日志器
// zLogger, _ = zap.NewProduction()
// zSugar = zLogger.Sugar()
Init()
}
func Sync() {
_ = zLogger.Sync()
}
// 初始化日志器
func Init(coreOptions ...CoreOption) {
encoder := getEncoder()
// 控制台输出(所有级别)
cores := []zapcore.Core{
zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), zapcore.DebugLevel), // 控制台输出
}
// 输出日志到多个目标(控制台+文件)
for _, option := range coreOptions {
core := option(encoder)
cores = append(cores, core)
}
// 创建 Core(核心日志器)
core := zapcore.NewTee(cores...)
zLogger = zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
zSugar = zLogger.Sugar()
}
func getEncoder() zapcore.Encoder {
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder // 修改时间编码器
// 在日志文件中使用大写字母记录日志级别
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
// NewConsoleEncoder 打印更符合人们观察的方式
return zapcore.NewConsoleEncoder(encoderConfig)
}