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