• zap和lumberjack的使用和封装


    项目打算写日志,没有选好合适的日志库,所以研究了下两个日志库。

    lumberjack介绍

    这个库我通读了源码,因为代码比较少。

    它的主要功能是对文件卷动和压缩进行了抽象。

    lumberjack 的主要格式

    ```
    type Logger struct {
    	//文件名
    	Filename string `json:"filename" yaml:"filename"`
    	//单个文件最大尺寸,默认单位M
    	MaxSize int `json:"maxsize" yaml:"maxsize"`
    	//日志最大时间
    	MaxAge int `json:"maxage" yaml:"maxage"`
    	//备份日志的数量
    	MaxBackups int `json:"maxbackups" yaml:"maxbackups"`
    	//日志的本地时间
    	LocalTime bool `json:"localtime" yaml:"localtime"`
    	//是否压缩
    	Compress bool `json:"compress" yaml:"compress"`
    	//文件尺寸
    	size int64
    	//文件句柄
    	file *os.File
    	//锁
    	mu   sync.Mutex
    	//chan
    	millCh    chan bool
    	//同步一次变量
    	startMill sync.Once
    }
    ```
    

    zap介绍

    zap是uber开源的日志库,性能超级赞。源码太长,没有全部读完。

    但可以简单使用。

    结合两者的特性进行封装

    flg

    对zlog和lumberjack进行封装。希望能够结合两者的优点

    toml config 基本的配置

    ```

    [jackcfg]
    filename="test.log"
    maxsize=500
    maxage=7
    maxbackups=1000
    localtime=true
    compress=false
    
    
    [zapcfgs]
    [zapcfgs.1]
    level="info"
    isdev=true
    logmod=3
    servername="test"

    ```

    使用

    ```

           l := &flg.Logger{}
    	err := l.LoadFromFile("test.toml")
    	if err != nil{
    		panic("get file faild")
    	}
    	ltest,err := l.GetLogByKey("test")
    	ltest.Info("a test")
    
    	ltest.Info("abc",zap.Int("int",11))

    ```

    https://github.com/beckbikang/flg

  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    codevs 1501 二叉树最大宽度和高度x
  • 原文地址:https://www.cnblogs.com/beckbi/p/11523730.html
Copyright © 2020-2023  润新知