日志管理
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 | 错误信息 |
