123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package zaplog
- import (
- "fmt"
- "kpt-tmr-group/pkg/tool"
- "path"
- "runtime"
- "time"
- "github.com/natefinch/lumberjack"
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- )
- var (
- Logger *zap.Logger
- logFileName = fmt.Sprintf("./logger/zap-%s.log", time.Now().Format(tool.DateTime))
- )
- func init() {
- encoderConfig := zap.NewDevelopmentEncoderConfig()
- // 设置日志时间格式
- encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
- // 日志encoder 还是json encode,把日志进行格式化json格式的
- encoder := zapcore.NewJSONEncoder(encoderConfig)
- // topicErrors := zapcore.AddSync(ioutil.Discard) //kafka topic
- fileWriteSyncer := getFileLogWriter(logFileName)
- core := zapcore.NewTee(
- // zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel), // 打印到控制台
- // zapcore.NewCore(zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()), topicErrors, zapcore.ErrorLevel), // 打印到kafka 待验证
- zapcore.NewCore(encoder, fileWriteSyncer, zapcore.DebugLevel), // 打印到指定的日志文件
- )
- Logger = zap.New(core)
- }
- func getFileLogWriter(logFileName string) zapcore.WriteSyncer {
- lumberJackLogger := &lumberjack.Logger{
- Filename: logFileName,
- MaxSize: 100, // 单个文件最大100M
- MaxBackups: 10, // 大于60个日志文件后,清理比较旧的日志文件
- MaxAge: 1, // 一天切割1次
- Compress: false,
- }
- return zapcore.AddSync(lumberJackLogger)
- }
- func getCallerInfoForLog() (callerFields []zap.Field) {
- pc, file, line, ok := runtime.Caller(2)
- if !ok {
- return
- }
- funcName := runtime.FuncForPC(pc).Name()
- funcName = path.Base(funcName)
- callerFields = append(callerFields, zap.String("func", funcName), zap.String("file", file), zap.Int("line", line))
- return
- }
- func Info(message string, fields ...zap.Field) {
- callerFields := getCallerInfoForLog()
- fields = append(fields, callerFields...)
- Logger.Info(message, fields...)
- }
- func Debug(message string, fields ...zap.Field) {
- callerFields := getCallerInfoForLog()
- fields = append(fields, callerFields...)
- Logger.Debug(message, fields...)
- }
- func Error(message string, fields ...zap.Field) {
- callerFields := getCallerInfoForLog()
- fields = append(fields, callerFields...)
- Logger.Error(message, fields...)
- }
- func Warn(message string, fields ...zap.Field) {
- callerFields := getCallerInfoForLog()
- fields = append(fields, callerFields...)
- Logger.Warn(message, fields...)
- }
|