在Linux系统中管理Golang日志,可结合标准库、第三方库及系统工具实现,核心方案如下:
基础日志记录
使用Go标准库log包,支持输出到控制台或文件,可通过log.SetOutput指定输出目标,log.SetFlags设置时间戳、文件名等格式。
logFile, _ := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
log.SetOutput(logFile)
log.Println("基础日志信息")
第三方库增强功能
import "github.com/sirupsen/logrus"
logger := logrus.New()
logger.SetLevel(logrus.DebugLevel)
logger.SetFormatter(&logrus.JSONFormatter{})
file, _ := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
logger.SetOutput(file)
logger.Info("结构化日志示例")
日志轮转与归档
MaxSize(文件大小)、MaxBackups(保留份数)、MaxAge(保留天数)实现自动轮转。集中式日志管理
性能优化
zap的异步模式。安全与合规
chmod限制日志文件访问权限,避免未授权读取。选型建议:
log或轻量级库(如zerolog)。logrus(功能全面)或zap(高性能),搭配lumberjack实现轮转。