温馨提示×

如何清理centos golang日志

小樊
38
2026-09-18 06:38:28
栏目: 编程语言

在 CentOS 上“清理 Golang 日志”通常分几种情况,取决于日志写在哪里、用什么方式记录。下面按常见场景给你一套实用做法。


一、先确认 Golang 日志在哪里

1. 应用自己写日志文件

常见路径:

/var/log/xxx.log
/home/app/logs/xxx.log
./logs/xxx.log

查看占用:

du -sh /var/log/*.log
ls -lh /var/log/xxx.log

二、常规清理方式(安全)

1. 清空日志文件(推荐)

不要直接 rm,否则正在运行的服务可能写不了日志。

# 清空日志(文件还在,程序可继续写)
> /var/log/xxx.log

或:

truncate -s 0 /var/log/xxx.log

2. 删除旧日志(带日期的)

例如:

xxx.log.20240101
xxx.log.2024-01-01

删除 7 天前的:

find /var/log -name "xxx.log.*" -mtime +7 -delete

三、如果用了 logrotate(强烈推荐)

1. 检查是否已有配置

ls /etc/logrotate.d/

2. 示例:给 Golang 日志加 logrotate

新建:

vim /etc/logrotate.d/golang-app

内容示例:

/var/log/xxx.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

说明:

  • copytruncate:不重启服务也能截断日志(适合 Golang)
  • compress:自动压缩旧日志
  • rotate 7:保留 7 份

测试:

logrotate -d /etc/logrotate.d/golang-app

四、如果是 systemd 服务日志(journalctl)

很多 Golang 程序用:

journalctl -u your-service

清理:

# 只保留最近 7 天
journalctl --vacuum-time=7d

# 限制大小
journalctl --vacuum-size=500M

五、Golang 程序层面建议(根本解决)

1. 使用日志轮转库(推荐)

  • lumberjack
import "gopkg.in/natefinch/lumberjack.v2"

log.SetOutput(&lumberjack.Logger{
    Filename:   "/var/log/xxx.log",
    MaxSize:    10, // MB
    MaxBackups: 7,
    MaxAge:     30, // days
    Compress:   true,
})

2. 输出到 stdout(配合 systemd)

log.Println("hello")

然后用 journald 管理日志。


六、快速总结

场景 做法
单个日志太大 > logfile
多历史日志 find + mtime
生产环境 logrotate
systemd 服务 journalctl
Golang 程序 lumberjack

如果你愿意,可以告诉我:

  • 日志路径
  • 是否 systemd 启动
  • 是否用了框架(gin / beego / zap)

我可以直接帮你写 logrotate 配置或 Go 日志代码。

0 踩