在CentOS上使用Golang记录日志时,可遵循以下最佳实践:
选择高性能日志库
zap(Uber开源,高性能结构化日志,适合高并发场景) 或 logrus(功能丰富,支持结构化日志和钩子机制)。log 仅适用于简单场景,缺乏高级功能。结构化日志格式
zap 和 logrus 均支持自定义字段(如 request_id、user_id)。logger.Info("user login", zap.String("user_id", "123"), zap.String("ip", "192.168.1.1"))
日志级别与动态切换
Info 或 Warn,开发环境 Debug)。zap.AtomicLevel 实现运行时动态调整日志级别。日志轮转与归档
lumberjack 库实现按大小或时间轮转日志文件,避免单个文件过大。hook := lumberjack.Logger{
Filename: "/var/log/app/app.log",
MaxSize: 100, // MB
MaxBackups: 7, // 保留天数
MaxAge: 30, // 天
Compress: true,
}
logger.SetOutput(&hook)
异步日志与性能优化
zap 的 SugaredLogger)避免阻塞主流程。GOGC 环境变量减少GC压力,或使用内存池复用日志对象。日志存储与监控
安全与合规
参考来源: