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()
}
}
没有无缘无故的荣耀
赞助我写出更好的博客
赞助我写出更好的博客