丰乐

zap和lumberjack的使用和封装

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

 

lumberjack介绍

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

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

lumberjack 的主要格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
```
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

posted on   李蝉儿  阅读(1912)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示