centos

CentOS中Golang如何进行日志管理

小樊
37
2025-07-18 16:30:31
栏目: 编程语言

在CentOS系统中使用Golang进行日志管理可以通过以下几种方法:

使用标准log包

Golang的标准库中提供了 log 包,可以进行基本的日志记录和输出。例如:

package main
import (
    "log"
    "os"
)

func main() {
    log.SetOutput(os.Stdout) // 设置日志输出到标准输出
    log.Println("这是一条普通日志")
    log.Fatalf("这是一条严重错误日志: %s", "错误信息")
}

使用第三方日志库

可以使用一些功能更强大的第三方日志库,如 logruszap。这些库通常提供更多的功能和更好的性能。例如,使用 zap

package main
import (
    "go.uber.org/zap"
)

func main() {
    logger := zap.NewProduction()
    defer logger.Sync()
    logger.Info("这是一条普通日志")
    logger.Error("这是一条错误日志", zap.String("err", "错误信息"))
}

使用Supervisor管理Golang服务

安装 Supervisor

sudo yum install supervisor -y

创建 Supervisor 配置文件:

/etc/supervisord.d 目录下创建一个新的配置文件,例如 app.ini

[program:app]
directory=/path/to/your/app
command=/path/to/your/app/dist/app-linux-amd64 -param1 "value1" -param2 "value2"
autostart=true
autorestart=true
stderr_logfile=/path/to/your/app/log/app.err.log
stdout_logfile=/path/to/your/app/log/app.log
environment ENV_VAR1="value3",ENV_VAR2="value4"

启动 Supervisor

sudo systemctl start supervisord
sudo systemctl status supervisord
sudo systemctl enable supervisord

使用logrotate进行日志轮转

为了避免日志文件过大,可以使用 logrotate 工具进行日志轮转。首先,安装 logrotate

sudo yum install logrotate

然后,创建一个 logrotate 配置文件,例如:

/path/to/your/logfile.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

将此配置文件添加到 /etc/logrotate.d/ 目录中,并确保 cron 任务定期运行 logrotate

echo "* * * * * /usr/sbin/logrotate /path/to/your/logrotate.conf" | crontab -

使用rsyslog或journalctl查看和管理系统日志

查看系统日志:

sudo journalctl -u systemd.service
sudo journalctl -n 100

0
看了该问题的人还看了