基本使用
package main
import (
"os"
"github.com/natefinch/lumberjack"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type Logger struct {
*zap.Logger
}
func ZapLoginit() *Logger {
coreList := make([]zapcore.Core, 0)
// 输出终端
encoder := zapcore.NewConsoleEncoder(zap.NewDevelopmentEncoderConfig())
coreList = append(coreList, zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel))
// 输出文件(info)
infoJackLogger := &lumberjack.Logger{
Filename: "./info.log",
MaxSize: 50,
MaxBackups: 30,
MaxAge: 30,
LocalTime: true,
Compress: false,
}
coreList = append(coreList, zapcore.NewCore(encoder, zapcore.AddSync(infoJackLogger), zapcore.InfoLevel))
// 输出文件(error)
errJackLogger := &lumberjack.Logger{
Filename: "./error.log",
MaxSize: 50,
MaxBackups: 50,
MaxAge: 30,
LocalTime: true,
Compress: false,
}
coreList = append(coreList, zapcore.NewCore(encoder, zapcore.AddSync(errJackLogger), zapcore.ErrorLevel))
// 所有的output, 汇聚初始化
core := zapcore.NewTee(coreList...)
// 设置是否打印堆栈
zapLogger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1), zap.AddStacktrace(zapcore.ErrorLevel))
return &Logger{
zapLogger,
}
}