Skip to content

日志管理

youlai-gin 使用 zap 作为日志框架,提供高性能结构化日志输出。

日志配置

配置文件 configs/dev.yaml

yaml
log:
  level: debug        # 日志级别: debug/info/warn/error
  format: json        # 输出格式: json/console
  output: stdout      # 输出位置: stdout/file
  file:
    path: logs/app.log
    maxSize: 100      # MB
    maxBackups: 5
    maxAge: 30        # 天
    compress: true

使用示例

go
import "youlai-gin/pkg/logger"

// 基本日志
logger.Info("用户登录", zap.String("username", "admin"))
logger.Error("数据库连接失败", zap.Error(err))

// 带上下文
logger.WithContext(c).Info("请求处理完成",
    zap.String("method", c.Request.Method),
    zap.String("path", c.Request.URL.Path),
    zap.Int("status", 200),
    zap.Duration("latency", time.Since(start)),
)

日志中间件

请求日志自动记录:

go
// internal/middleware/logger.go
func Logger() gin.HandlerFunc {
    return func(c *gin.Context) {
        start := time.Now()
        path := c.Request.URL.Path

        c.Next()

        logger.Info("HTTP请求",
            zap.Int("status", c.Writer.Status()),
            zap.String("method", c.Request.Method),
            zap.String("path", path),
            zap.String("ip", c.ClientIP()),
            zap.Duration("latency", time.Since(start)),
        )
    }
}

日志级别

级别说明
debug调试信息,开发环境
info常规信息
warn警告信息
error错误信息

基于 MIT 许可发布