123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package log
- import (
- "fmt"
- "go.uber.org/zap"
- "go.uber.org/zap/zapcore"
- "os"
- "time"
- )
- var logger *zap.Logger
- func InitLogger(logpath string, loglevel string) {
- // 日志分割
- //hook := lumberjack.Logger{
- // Filename: logpath, // 日志文件路径,默认 os.TempDir()
- // MaxSize: 200, // 每个日志文件保存10M,默认 100M
- // MaxBackups: 20, // 保留30个备份,默认不限
- // MaxAge: 15, // 保留7天,默认不限
- // Compress: false, // 是否压缩,默认不压缩
- //}
- //write := zapcore.AddSync(&hook)
- // 设置日志级别
- // debug 可以打印出 info debug warn
- // info 级别可以打印 warn info
- // warn 只能打印 warn
- // debug->info->warn->error
- var level zapcore.Level
- switch loglevel {
- case "debug":
- level = zap.DebugLevel
- case "info":
- level = zap.InfoLevel
- case "error":
- level = zap.ErrorLevel
- default:
- level = zap.InfoLevel
- }
- encoderConfig := zapcore.EncoderConfig{
- TimeKey: "time",
- LevelKey: "level",
- NameKey: "logger",
- CallerKey: "caller",
- MessageKey: "msg",
- StacktraceKey: "stacktrace",
- LineEnding: zapcore.DefaultLineEnding,
- EncodeLevel: zapcore.LowercaseLevelEncoder, // 小写编码器
- EncodeTime: formatEncodeTime,
- EncodeDuration: zapcore.SecondsDurationEncoder, //
- EncodeCaller: zapcore.ShortCallerEncoder, // 全路径编码器
- //EncodeName: zapcore.FullNameEncoder,
- }
- // 设置日志级别
- atomicLevel := zap.NewAtomicLevel()
- atomicLevel.SetLevel(level)
- core := zapcore.NewCore(
- // zapcore.NewConsoleEncoder(encoderConfig),
- zapcore.NewJSONEncoder(encoderConfig),
- zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout)),
- //zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(write)), // 打印到控制台和文件
- //write, //文件
- level,
- )
- // 开启开发模式,堆栈跟踪
- caller := zap.AddCaller()
- // 开启文件及行号
- development := zap.Development()
- // 设置初始化字段,如:添加一个服务器名称
- //filed := zap.Fields(zap.String("serviceName", "serviceName"))
- // 构造日志
- logger = zap.New(core, caller, development)
- logger.Info("DefaultLogger init success")
- }
- func formatEncodeTime(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
- enc.AppendString(fmt.Sprintf("%d-%02d-%02d %02d:%02d:%02d", t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second()))
- }
- func Field(key string, val interface{}) zap.Field {
- return zap.Any(key, val)
- }
- func Debug(msg string, fields ...zap.Field) {
- logger.Debug(msg, fields...)
- }
- func Info(msg string, fields ...zap.Field) {
- logger.Info(msg, fields...)
- }
- func Warn(msg string, fields ...zap.Field) {
- logger.Warn(msg, fields...)
- }
- func Error(msg string, fields ...zap.Field) {
- logger.Error(msg, fields...)
- }
- func DPanic(msg string, fields ...zap.Field) {
- logger.DPanic(msg, fields...)
- }
- func Panic(msg string, fields ...zap.Field) {
- logger.Panic(msg, fields...)
- }
- func Fatal(msg string, fields ...zap.Field) {
- logger.Fatal(msg, fields...)
- }
|