在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压力,或使用内存池复用日志对象。日志存储与监控
安全与合规
参考来源: