美文网首页
Go - zap+zapcore+lumberjack 滚动输出

Go - zap+zapcore+lumberjack 滚动输出

作者: 灵魂深灵 | 来源:发表于2019-08-09 08:46 被阅读0次
    一、关于 zap :https://blog.csdn.net/skh2015java/article/details/81771808
    • Lumberjack是一个Go包,用于将日志写入滚动文件。 zap 不支持文件归档,如果要支持文件按大小或者时间归档,需要使用lumberjack,lumberjack也是zap官方推荐的。
    1、main函数:
    package main
    
    import (
        logCondf "Zap/Conf"
        "Zap/gb"
        "github.com/gin-gonic/gin"
    )
    
    func init() {
        logCondf.LogConf()   
    }
    
    func test(c *gin.Context) {
        gb.Logger.Info("aaaaaaaa")   //用于测试
    }
    
    func main() {
        router := gin.Default()
        router.POST("/test",test)
        router.Run(":8888")
    }
    
    2、logger全局:
    package gb
    
    import "go.uber.org/zap"
    
    var Logger *zap.SugaredLogger
    
    3、日志代码:
    
    import (
        "Zap/gb"
        "fmt"
        "github.com/natefinch/lumberjack"
        "go.uber.org/zap"
        "go.uber.org/zap/zapcore"
        "log"
        "time"
    )
    
    /**
     * 获取日志
     * filePath 日志文件路径  
     * level 日志级别
     * maxSize 每个日志文件保存的最大尺寸 单位:M
     * maxBackups 日志文件最多保存多少个备份
     * maxAge 文件最多保存多少天
     * compress 是否压缩
     * serviceName 服务名
     */
    func LogConf() {
        now := time.Now()
        hook := &lumberjack.Logger{
            Filename:   fmt.Sprintf("log/%04d%02d%02d%02d%02d%02d", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second()),  //filePath
            MaxSize:    500, // megabytes
            MaxBackups: 10000,
            MaxAge:     100000, //days
            Compress:   false,  // disabled by default
        }
        defer hook.Close()
        /*zap 的 Config 非常的繁琐也非常强大,可以控制打印 log 的所有细节,因此对于我们开发者是友好的,有利于二次封装。
        但是对于初学者则是噩梦。因此 zap 提供了一整套的易用配置,大部分的姿势都可以通过一句代码生成需要的配置。
        */
        enConfig := zap.NewProductionEncoderConfig() //生成配置
    
        // 时间格式
        enConfig.EncodeTime = zapcore.ISO8601TimeEncoder
    
        level := zap.InfoLevel
        w := zapcore.AddSync(hook)
        core := zapcore.NewCore(
            zapcore.NewConsoleEncoder(enConfig), //编码器配置
            w,                                   //打印到控制台和文件
            level,                               //日志等级
        )
    
        logger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1))
        _log := log.New(hook, "", log.LstdFlags)
        gb.Logger = logger.Sugar()
        _log.Println("Start...")
    }
    

    相关文章

      网友评论

          本文标题:Go - zap+zapcore+lumberjack 滚动输出

          本文链接:https://www.haomeiwen.com/subject/ccaodctx.html