在CentOS上配置Golang日志可以通过标准库log
包、第三方库如zap
、logrus
等来实现。以下是详细步骤和示例代码:
使用标准库log
包
- 设置日志级别和输出格式:
package main import ( "log" "os" ) func main() { // 设置日志输出到标准输出 log.SetOutput(os.Stdout) // 设置日志格式为带有文件名和行号的输出 log.SetFlags(log.LstdFlags | log.Lshortfile) // 输出日志 log.Println("这是一条INFO级别的日志") log.Fatalf("这是一条严重错误日志: %s", "错误信息") }
使用第三方库zap
- 安装
zap
库:
go get go.uber.org/zap
- 配置和使用
zap
:
package main import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" ) func main() { logger := zap.NewProduction() defer logger.Sync() // flushes buffer, if any // 使用Info方法记录日志 logger.Info("这是一条普通日志", zap.Int("logCount", 1), zap.String("appName", "MyApp")) }
使用第三方库logrus
- 安装
logrus
库:
go get github.com/sirupsen/logrus
- 配置和使用
logrus
:
package main import ( "github.com/sirupsen/logrus" "os" ) func main() { log := logrus.New() // 设置日志格式为JSON log.SetFormatter(&logrus.JSONFormatter{}) // 添加日志文件处理器 file, err := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { log.Fatalf("Failed to open log file: %v", err) } log.SetOutput(file) // 记录日志 log.WithFields(logrus.Fields{ "animal": "walrus", "size": 10, }).Info("A group of walrus emerges from the ocean") }
日志文件轮转
为了避免日志文件过大,可以使用logrotate
工具进行日志文件轮转。
- 安装
logrotate
:
sudo yum install logrotate
- 创建
logrotate
配置文件:
/path/to/your/logfile { daily rotate 7 compress missingok notifempty }
- 将配置文件添加到
crontab
:
echo "* * * * * /usr/sbin/logrotate /path/to/your/logrotate.conf" | crontab -
通过以上步骤,可以在CentOS系统上配置Golang日志,并根据实际需求选择合适的日志库和配置方式。