zap log日志简单使用 开箱即用 go日志

安装:go get -u go.uber.org/zap

初始化

package logZap

var Logger *zap.Logger

func Init() {
    var path string
    var serverName ="app_name"
    path = "/var/log/"
    if runtime.GOOS == "windows" {
        path = "./"
    } else {
        path = "/var/log/" + serverName + "/"
    }
    pathInfo := path + core.New().ServerInfo.ServerName + "_info.log"
    pathError := path + core.New().ServerInfo.ServerName + "_error.log"
    var err error
    Logger, err = GetLogger(pathInfo, pathError)
    if err != nil {
        panic(err)
    }
}

func GetLogger(infoPath, errorPath string) (*zap.Logger, error) {
    highPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
        return lev >= zap.ErrorLevel
    })
    lowPriority := zap.LevelEnablerFunc(func(lev zapcore.Level) bool {
        return lev < zap.ErrorLevel && lev >= zap.DebugLevel
    })
    prodEncoder := zap.NewProductionEncoderConfig()
    prodEncoder.EncodeTime = zapcore.ISO8601TimeEncoder
    lowWriteSyncer, lowClose, err := zap.Open(infoPath)
    if err != nil {
        lowClose()
        return nil, err
    }
    highWriteSyncer, highClose, err := zap.Open(errorPath)
    if err != nil {
        highClose()
        return nil, err
    }
    highCore := zapcore.NewCore(zapcore.NewJSONEncoder(prodEncoder), highWriteSyncer, highPriority)
    lowCore := zapcore.NewCore(zapcore.NewJSONEncoder(prodEncoder), lowWriteSyncer, lowPriority)
    return zap.New(zapcore.NewTee(highCore, lowCore), zap.AddCaller()), nil
}

打印错误:

logZap.Logger.Error("error:", zap.Error(err))

打印debug:

logZap.Logger.Debug("port form:",zap.String("portStr",portStr))

zap支持的go的数据类型:pkg.go.dev/go.uber.org/zap#Field

zap日志打印方法等级:pkg.go.dev/go.uber.org/zap#Logger

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!