Skip to content

性能优化 ​

Zap 是为高性能设计的日志库。

性能特点 ​

  • 零分配:避免内存分配
  • 高效编码:JSON 编码器高度优化
  • 并发安全:无需加锁
  • 缓冲池:重用内存

优化建议 ​

使用结构化日志 ​

go
// 推荐
logger.Info("用户登录",
    zap.String("user_id", "123"),
    zap.String("ip", "192.168.1.1"),
)

// 不推荐
logger.Infof("用户登录 user_id=%s ip=%s", "123", "192.168.1.1")

避免不必要的字段 ​

go
// 推荐 - 只记录必要字段
logger.Debug("请求处理", zap.String("path", "/api/user"))

// 不推荐 - 记录过多字段
logger.Debug("请求处理",
    zap.String("path", "/api/user"),
    zap.Any("headers", headers),  // 大对象
)

条件日志 ​

go
if logger.Core().Enabled(zap.DebugLevel) {
    logger.Debug("调试信息", zap.Any("data", expensiveData()))
}

基准测试 ​

go
// 测试 Zap 性能
func BenchmarkZap(b *testing.B) {
    logger, _ := zap.NewProduction()
    defer logger.Sync()
    
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        logger.Info("test", zap.Int("i", i))
    }
}

参考:https://pkg.go.dev/go.uber.org/zap