在Debian系統中使用Golang記錄日志時,可遵循以下最佳實踐:
選擇合適的日志庫
log
:適合簡單場景,支持基本日志級別和文件輸出。結構化日志與字段
使用JSON格式輸出日志,添加上下文字段(如user_id
、request_id
),便于后續分析。
// zap示例:添加結構化字段
logger.Info("User login", zap.String("user_id", "123"), zap.String("ip", "192.168.1.1"))
日志級別與動態配置
INFO
/WARN
級別,避免DEBUG
日志過多影響性能。日志輪轉與歸檔
使用lumberjack
庫實現日志按大小、天數輪轉,并壓縮舊日志。
// 配置lumberjack輪轉
log.SetOutput(&lumberjack.Logger{
Filename: "/var/log/app.log",
MaxSize: 10, // MB
MaxBackups: 3,
MaxAge: 7, // 天
Compress: true,
})
性能優化
zapcore.AddSync
)減少I/O阻塞。集中式日志管理
集成ELK(Elasticsearch+Logstash+Kibana)或EFK(Elasticsearch+Fluentd+Kibana)堆棧,實現日志的集中存儲、檢索和分析。
安全與合規
監控與告警
通過Prometheus+Grafana監控日志指標(如錯誤率、日志量),設置異常告警規則。
參考資料: