i007.cc

i007.cc

优先队列-降维打击

go日志框架zap配置示例(正在使用)

如果你正在对golang的日志框架做选型,我推荐zap
package log

import (
    "fmt"
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    "gopkg.in/natefinch/lumberjack.v2"
    "os"
    "time"
)

var (
    errorLogger *zap.SugaredLogger
    atom zap.AtomicLevel
)

func TimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
    enc.AppendString(t.Format("2006-01-02 15:04:05.000"))
}

func init() {
    atom = zap.NewAtomicLevel()
    fileName := fmt.Sprintf("./log/%04d-%02d-%02d.log", time.Now().Year(), time.Now().Month(), time.Now().Day())
    syncWriter := zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(&lumberjack.Logger{
        Filename:   fileName,
        MaxSize:    500, // megabytes
        MaxBackups: 3,
        MaxAge:     28, // days
        LocalTime: true,
    }))

    encoderConfig := zapcore.EncoderConfig{
        TimeKey:        "T",
        LevelKey:       "L",
        NameKey:        "N",
        CallerKey:      "C",
        MessageKey:     "M",
        StacktraceKey:  "S",
        LineEnding:     zapcore.DefaultLineEnding,
        EncodeLevel:    zapcore.CapitalLevelEncoder,
        EncodeTime:     TimeEncoder,
        EncodeDuration: zapcore.StringDurationEncoder,
        EncodeCaller:   zapcore.ShortCallerEncoder,
    }

    core := zapcore.NewCore(
        zapcore.NewConsoleEncoder(encoderConfig),
        syncWriter,
        atom,
    )
    logger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
    errorLogger = logger.Sugar()
}

func SetLogLevel(level zapcore.Level) {
    atom.SetLevel(level)
}

func Debug(args ...interface{}) {
    errorLogger.Debug(args...)
}

func Debugf(template string, args ...interface{}) {
    errorLogger.Debugf(template, args...)
}

func Info(args ...interface{}) {
    errorLogger.Info(args...)
}

func Infof(template string, args ...interface{}) {
    errorLogger.Infof(template, args...)
}

func Warn(args ...interface{}) {
    errorLogger.Warn(args...)
}

func Warnf(template string, args ...interface{}) {
    errorLogger.Warnf(template, args...)
}

func Error(args ...interface{}) {
    errorLogger.Error(args...)
}

func Errorf(template string, args ...interface{}) {
    errorLogger.Errorf(template, args...)
}

func DPanic(args ...interface{}) {
    errorLogger.DPanic(args...)
}

func DPanicf(template string, args ...interface{}) {
    errorLogger.DPanicf(template, args...)
}

func Panic(args ...interface{}) {
    errorLogger.Panic(args...)
}

func Panicf(template string, args ...interface{}) {
    errorLogger.Panicf(template, args...)
}

func Fatal(args ...interface{}) {
    errorLogger.Fatal(args...)
}

func Fatalf(template string, args ...interface{}) {
    errorLogger.Fatalf(template, args...)
}

 

调用

log.Infof("admin listening on %v", addr)

 

打印结果:

2019-04-30 10:36:23.397	INFO	core/admin.go:59	admin listening on :8101

 

发表回复