在Debian系统上配置Golang日志可结合标准库、第三方库及系统工具,以下是关键技巧:
log:轻量级,适合基础日志需求,支持输出到文件或控制台,可通过SetOutput和SetFlags配置。package main
import (
"log"
"os"
)
func main() {
logFile, _ := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
log.SetOutput(logFile) // 输出到文件
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) // 格式:日期+时间+文件名
log.Println("This is a log message.")
}
package main
import (
"github.com/sirupsen/logrus"
)
func main() {
log := logrus.New()
log.SetFormatter(&logrus.JSONFormatter{}) // JSON格式
log.SetLevel(logrus.InfoLevel) // 日志级别
log.WithFields(logrus.Fields{"key": "value"}).Info("Structured log message")
}
package main
import (
"go.uber.org/zap"
)
func main() {
logger, _ := zap.NewProduction() // 生产环境配置
defer logger.Sync()
logger.Info("This is a zap log", zap.String("key", "value")) // 结构化字段
}
使用logrotate工具管理日志文件,避免单个文件过大:
sudo apt install logrotate/etc/logrotate.d/myapp:/path/to/app.log {
daily
rotate 7
missingok
compress
create 0644 root root
}
sudo logrotate -vf /etc/logrotate.d/myappzap,避免反射开销;开发环境可用logrus的sugar模式简化代码。