在CentOS系统中管理Golang应用程序的日志轮转,logrotate是最理想的选择。以下是详细的操作步骤,每一步都配有明确的含义说明。

1. 安装logrotate工具
首先检查系统中是否已安装logrotate。多数CentOS发行版默认包含此工具,但若未安装,只需执行以下命令即可:
sudo yum install logrotate
2. 确定Golang应用的日志文件路径
假设你的Golang应用将日志输出至/var/log/myapp.log,该路径需要在后续配置中保持一致。
3. 创建logrotate配置文件
在/etc/logrotate.d/目录下创建一个专用于该应用的配置文件,例如命名为myapp:
sudo nano /etc/logrotate.d/myapp
内容如下:
/var/log/myapp.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root root
}
各配置选项的含义如下:
daily:每天执行一次日志轮转,适用于常规场景。missingok:当日志文件缺失时不会报错,避免干扰。rotate 7:保留最近7个轮转后的旧日志文件,超出部分自动删除。compress:轮转后自动压缩为.gz格式,节省磁盘空间。notifempty:若日志文件为空则跳过轮转,避免无意义操作。create 640 root root:轮转后立即创建新的日志文件,权限设置为640,所有者与组均为root,保障安全。
4. 手动测试配置文件生效
配置文件编写完成后,无需等待定时任务。可通过强制轮转命令立即验证配置是否正确:
sudo logrotate -f /etc/logrotate.d/myapp
参数-f表示强制执行轮转,即使日志文件内容极少也会触发。若命令执行后无错误提示,则表明配置无误。
5. 配置cron定时自动执行
通常系统已为logrotate配置了全局定时任务,每天运行一次。为稳妥起见,建议在/etc/cron.daily/目录下添加一个执行脚本:
sudo nano /etc/cron.daily/logrotate
写入:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
然后给执行权限:
sudo chmod +x /etc/cron.daily/logrotate
此后,系统cron服务将在每天凌晨自动执行logrotate,根据配置文件中设定的频率(本例为每天)检查并轮转日志。
6. 验证日志轮转是否生效
检查/var/log/目录,查看是否生成类似myapp.log.1.gz的轮转文件。若存在,则表明日志轮转已成功运行。
至此,您已成功为Golang应用配置了自动日志轮转。只要应用持续写入日志,系统便会按照设置每日切分、压缩并清理旧文件,从此无需担忧磁盘空间被日志占用殆尽。
