golang 使用 zap logger 加入Lumberjack 写日志

golang 使用 zap logger 加入Lumberjack 写日志

Cd 进入项目目录

go get gopkg.in/natefinch/lumberjack.v2

go install gopkg.in/natefinch/lumberjack.v2

go get go.uber.org/zap

关于下面代码说明:

 

复制代码
func getLogWriter() zapcore.WriteSyncer {
    lumberJackLogger := &lumberjack.Logger{
        Filename:   "../logs/log.log",  // 日志文件的位置
        MaxSize:    1,                  // 在进行切割之前,日志文件的最大大小(以MB为单位)
        MaxBackups: 5,                  // 保留旧文件的最大个数
        MaxAge:     30,                 // 保留旧文件的最大天数
        Compress:   false,              // 是否压缩/归档旧文件
    }
    return zapcore.AddSync(lumberJackLogger)
}
复制代码

 

 

 

 

具体实现代码

 

复制代码
package main

import (
    "net/http"

    "github.com/natefinch/lumberjack"
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
)

var sugarLogger *zap.SugaredLogger

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

func InitLogger() {
    writeSyncer := getLogWriter()
    encoder := getEncoder()
    core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)

    logger := zap.New(core, zap.AddCaller())
    sugarLogger = logger.Sugar()
}

func getEncoder() zapcore.Encoder {
    encoderConfig := zap.NewProductionEncoderConfig()
    encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
    encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
    return zapcore.NewConsoleEncoder(encoderConfig)
}

func getLogWriter() zapcore.WriteSyncer {
    lumberJackLogger := &lumberjack.Logger{
        Filename:   "./test.log",
        MaxSize:    1,
        MaxBackups: 5,
        MaxAge:     30,
        Compress:   false,
    }
    return zapcore.AddSync(lumberJackLogger)
}

func simpleHttpGet(url string) {
    sugarLogger.Debugf("Trying to hit GET request for %s", url)
    resp, err := http.Get(url)
    if err != nil {
        sugarLogger.Errorf("Error fetching URL %s : Error = %s", url, err)
    } else {
        sugarLogger.Infof("Success! statusCode = %s for URL %s", resp.Status, url)
        resp.Body.Close()
    }
}
复制代码

 

posted @   酒沉吟  阅读(192)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2012-06-04 使用 AspNet第三方控件分页
点击右上角即可分享
微信分享提示