Golang zap 日志库快速使用

1. 前言

在go项目中,日志记录是必不可少的一部分,可以帮助开发者调试和排查问题以及为系统的运行状况提供数据。本文介绍了go业内非常流行的zap日志库,同时结合Lumberjack实现日志的切割和归档。

2. zap 日志库

2.1 为什么使用zap

go本身也有logger日志,但它仅有基本的日志级别,没有格式化日志的能力以及不提供日志切割,故舍弃。

zap官网描述Blazing fast, structured, leveled logging in Go.

记录一条消息和10个字段的性能对比:

Package Time Time % to zap Objects Allocated
⚡ zap 656 ns/op +0% 5 allocs/op
⚡ zap (sugared) 935 ns/op +43% 10 allocs/op
zerolog 380 ns/op -42% 1 allocs/op
go-kit 2249 ns/op +243% 57 allocs/op
slog (LogAttrs) 2479 ns/op +278% 40 allocs/op
slog 2481 ns/op +278% 42 allocs/op
apex/log 9591 ns/op +1362% 63 allocs/op
log15 11393 ns/op +1637% 75 allocs/op
logrus 11654 ns/op +1677% 79 allocs/op

2.2 安装

go get -u go.uber.org/zap

2.3 配置并引入 lumberjack 日志切分

zap核心是使用 zapcore.NewCore() 来配置,接收三个参数:encoder, writeSyncer, level

encoder表示写入以什么样的格式写入日志,如:指定时间格式为2024-06-23T10:28:52.011+0800

writeSyncer表示日志写到哪里去(终端或文件),lumberjack 也在这里配置。

level指定日志级别,zap支持Debug, Info, Error, Warn, Fatal等常用日志级别。

创建项目,结构为:

.
├── go.mod
├── go.sum
├── logger
│   └── zap.go
└── main.go

在zap.go文件中添加:

// Init 初始化Logger
func Init() {
   
	writeSyncer := getLogWriter()
	encoder 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值