app.log
error.log
package main
import (
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
var logger *zap.Logger
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = func(time time.Time, encoder zapcore.PrimitiveArrayEncoder) {
encoder.AppendString("[" + time.Format("2006-01-02 15:04:05.000") + "]")
}
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
encoder := zapcore.NewConsoleEncoder(encoderConfig)
warnLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl <= zapcore.WarnLevel
})
errorLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.ErrorLevel
})
errorLogger := &lumberjack.Logger {
Filename: "D:\\logs\\error.log",
MaxSize: 1,
MaxBackups: 1,
MaxAge: 1,
Compress: true,
}
warnLogger := &lumberjack.Logger {
Filename: "D:\\logs\\app.log",
MaxSize: 1,
MaxBackups: 1,
MaxAge: 1,
Compress: true,
}
core := zapcore.NewTee(
zapcore.NewCore(encoder, zapcore.AddSync(warnLogger), warnLevel),
zapcore.NewCore(encoder, zapcore.AddSync(errorLogger), errorLevel),
)
logger = zap.New(core, zap.AddCaller())
logger.Debug("Debug")
logger.Info("Info")
logger.Warn("Warn")
logger.Error("Error")
logger.Panic("Panic")
}