您的位置:首页 >CentOS中Golang日志如何实现滚动
发布于2026-04-23 阅读(0)
扫一扫,手机访问
在CentOS环境下为Golang应用配置日志滚动,其实是个挺常见的需求。毕竟,没人希望日志文件无限膨胀,最终把磁盘空间占满。通常,我们会借助系统自带的logrotate工具,再配合Golang程序本身的日志输出设置,就能搭建一套稳定、自动化的日志管理方案。下面,咱们就一步步来看看具体怎么操作。

首先,得让你的Golang程序能把日志写到文件里。这里以标准库的log包为例,创建一个main.go文件:
package main
import (
"log"
"os"
"time"
)
func main() {
logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening log file: %v", err)
}
defer logFile.Close()
log.SetOutput(logFile)
log.SetFlags(log.LstdFlags | log.Lshortfile)
for {
log.Printf("This is a log message at %v", time.Now())
time.Sleep(1 * time.Second)
}
}
这段代码干了这么几件事:它会创建(或打开)一个名为app.log的文件,并将所有日志输出定向到这里。设置log.LstdFlags | log.Lshortfile是为了让每条日志都带上时间戳以及对应的文件名和行号,这在排查问题时非常有用。后面的循环只是模拟持续产生日志。
代码写好后,直接运行即可:
go run main.go
程序启动后,你会在同级目录下看到app.log文件,并且日志内容在不断追加。基础工作这就完成了。
接下来是重头戏:如何让这个不断变大的日志文件自动“滚动”起来?答案是使用CentOS系统自带的logrotate。先检查一下它是否已经安装:
sudo yum install logrotate
如果系统提示已安装,这一步就可以跳过;如果没有,上面这条命令会帮你完成安装。
安装好工具后,关键就在于配置文件。创建一个名为logrotate.conf的配置文件,内容如下:
/path/to/your/app.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root root
}
这里有几个参数值得仔细说说:
daily:指定滚动周期为每天一次。当然你也可以按需改为weekly或monthly。rotate 7:这意味着最多保留7份历史日志文件,更旧的会被自动删除。compress:这个选项很实用,它会让旧的日志文件自动用gzip压缩,节省磁盘空间。missingok:如果日志文件暂时不存在,logrotate不会报错,适合应对服务重启等场景。notifempty:如果当天日志文件是空的,就不执行滚动操作。create 0640 root root:滚动后创建的新日志文件,其权限和属主会按此设置。请根据你的运行环境调整用户和组。特别注意:务必将配置中的/path/to/your/app.log替换成你应用程序日志文件的实际绝对路径。
配置写好后,需要把它放到logrotate能识别的目录下:
sudo mv logrotate.conf /etc/logrotate.d/your_app_name
这里的your_app_name建议取一个能标识你应用的名字,比如my_golang_app。放到/etc/logrotate.d/目录后,logrotate服务(通常由cron每日触发)就会自动加载并应用这个配置。
配置完成后,不一定非要等到第二天才能测试。你可以用下面的命令强制logrotate立即运行一次,以验证配置是否正确:
sudo logrotate -f /etc/logrotate.d/your_app_name
执行成功后,你会发现原来的app.log可能被重命名为app.log.1,并产生了一个新的app.log文件。如果配置了compress,你还会看到app.log.1.gz这样的压缩文件。
至此,一套从Golang程序输出到系统级自动滚动的完整日志管理流程就搭建完成了。这套组合拳既利用了Golang的灵活性,也借用了CentOS系统工具的成熟与稳定,算是兼顾了实用与效率的常见做法。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9