天天看點

go zap日志元件,日志切分、日志記錄

zap log 初始化:設定 ​

​日志檔案每 5MB 會切割并且在目前目錄下最多儲存 5 個備份​

​,并且會将舊文檔儲存30天

使用 ​

​lumberjack​

​ 做日志切分

package main

import (
    "github.com/natefinch/lumberjack"
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    "net/http"
)

var logger *zap.Logger
var sugarLogger *zap.SugaredLogger



func InitLogger() {
    encoder := getEncoder()
    writerSyncer := getLogWriter()
    core := zapcore.NewCore(encoder,writerSyncer,zapcore.DebugLevel)
    logger = zap.New(core,zap.AddCaller())
    sugarLogger = logger.Sugar()
}

// core 三個參數之  編碼
func getEncoder() zapcore.Encoder {
    encoderConfig := zap.NewProductionEncoderConfig()
    encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
    encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
    return zapcore.NewConsoleEncoder(encoderConfig)
}

// core 三大核心之  路徑
func getLogWriter() zapcore.WriteSyncer {
    lumberJackLogger := &lumberjack.Logger{
        Filename:   "E:/test.log",
        MaxSize:    10,
        MaxBackups: 5,
        MaxAge:     30,
        Compress:   false,
    }
    return zapcore.AddSync(lumberJackLogger)
}

func main() {
    InitLogger()
    defer logger.Sync()
    simpleHttpGet("www.baidu.com")
    simpleHttpGet("http://www.baidu.com")
}


func simpleHttpGet(url string) {
    resp, err := http.Get(url)
    if err != nil {
        logger.Error(
            "Error fetching url..",
            zap.String("url", url),
            zap.Error(err))
    } else {
        logger.Info("Success..",
            zap.String("statusCode", resp.Status),
            zap.String("url", url))
        resp.Body.Close()
    }
}      

沒有無緣無故的榮耀