Zap 是 Uber 开发的一款高性能 Go 语言日志库,专为速度和低内存分配优化。以下是关键特性和使用示例:
核心特性
- 高性能:比标准库 
log 和其他日志库(如 Logrus)快 4-10 倍。 
- 结构化日志:支持 JSON 格式输出,便于日志分析。
 
- 分级日志:提供 Debug、Info、Warn、Error、Fatal、Panic 等级别。
 
- 灵活配置:可自定义输出位置、格式和级别。
 
基本使用
- 
安装:
go get -u go.uber.org/zap
 
- 
快速使用(高性能模式,但不可配置):
package main
import "go.uber.org/zap"
func main() {
    logger, _ := zap.NewProduction() // 生产环境(JSON 格式)
    defer logger.Sync()
    logger.Info("用户登录",
        zap.String("username", "Alice"),
        zap.Int("attempt", 3),
    )
    // 输出:{"level":"info","ts":1691400000,"msg":"用户登录","username":"Alice","attempt":3}
}
 
- 
自定义配置(开发环境友好):
func main() {
    logger, _ := zap.NewDevelopment() // 开发环境(彩色控制台输出)
    defer logger.Sync()
    logger.Warn("内存使用率高",
        zap.Float64("usage", 85.5),
    )
}
 
- 
全局日志器(简化调用):
zap.ReplaceGlobals(logger) // 替换全局日志器
zap.L().Info("全局日志示例")
 
性能优化建议
- 使用 
zap.String、zap.Int 等类型化字段减少反射开销。 
- 避免在日志调用中执行复杂操作(如字符串拼接),优先使用结构化字段。
 
适用场景
- 微服务和高并发系统
 
- 需要 JSON 格式日志与 ELK 等工具集成
 
- 对性能要求严格的场景
 
Zap 通过避免接口转换和减少内存分配实现了极致性能,是 Go 项目中替代标准库或其他日志库的理想选择。