商城首页欢迎来到中国正版软件门户

您的位置:首页 >Ubuntu如何修改日志清理保留天数

Ubuntu如何修改日志清理保留天数

  发布于2026-08-12 阅读(0)

扫一扫,手机访问

journalctl 日志保留策略由 /etc/systemd/journald.conf 中 SystemMaxUse 和 MaxRetentionSec 共同控制,需重启 systemd-journald 生效;logrotate 通过 rotate 参数控制文本日志份数,非直接设天数;Ja va 应用日志应由其日志框架(如 logback)配置 maxHistory 管理。

Ubuntu如何修改日志清理保留天数

journalctl 默认保留策略在哪改

systemd journal 日志的默认保留策略不靠配置文件硬编码,而是由 /etc/systemd/journald.conf 中的两个参数控制:SystemMaxUseMaxRetentionSec。改完必须重启 journald 才生效。

常见误区是以为只设 MaxRetentionSec 就够了——其实它只是“软上限”,真正起作用的是磁盘空间配额(SystemMaxUse)和该参数的组合。如果磁盘没满,MaxRetentionSec 可能完全不触发清理。

  • 打开配置:sudo nano /etc/systemd/journald.conf
  • 取消注释并修改这两行(例如保留 14 天):
    SystemMaxUse=500M
    MaxRetentionSec=14d
  • 重启服务:sudo systemctl restart systemd-journald
  • 验证是否加载:sudo systemctl show --property=SystemMaxUse,MaxRetentionSec systemd-journald

logrotate 的保留天数怎么调

logrotate 负责管理的是传统的 syslog 日志文件,比如 /var/log/syslog/var/log/auth.log 这类。它的保留时长并不是直接按“天数”来算,而是由配置文件中的 rotate 参数控制,准确说是按“保留多少份归档”来决定。举个例子,rotate 7 的意思是最多保留 7 个归档文件;如果通常每天轮转一次,那大致就相当于保留 7 天。

直接改 /etc/logrotate.d/rsyslog 或对应服务的配置即可,但要注意:轮转周期(daily/weekly)必须和 rotate 数值匹配,否则可能提前丢日志。

  • 编辑配置:sudo nano /etc/logrotate.d/rsyslog
  • 找到类似这一段,把 rotate 4 改成想要的份数:
    /var/log/syslog {
    rotate 14
    daily
    compress
    missingok
    create 640 root adm
    }
  • 立即生效:sudo logrotate -f /etc/logrotate.conf
  • 检查效果:ls -1 /var/log/syslog.* | wc -l(应 ≤14)

为什么改了配置还是删不掉旧日志

最常踩的坑是混淆了两种日志系统:journalctl 管理的是二进制 journal 日志(/var/log/journal/),logrotate 管理的是文本 syslog(/var/log/syslog 等)。改错地方就白忙活。

另一个隐蔽问题是 logrotate 配置里漏了 dateext 但写了 daily,导致归档文件名不含日期,rotate 判定逻辑出错;或者用了 copytruncate 却没配 notifempty,空文件也被轮转,快速占满配额。

  • 确认日志类型:file /var/log/syslog(text) vs file /var/log/journal/*(data)
  • 查 journal 实际占用:journalctl --disk-usage
  • 查 logrotate 是否真执行过:sudo logrotate -d /etc/logrotate.conf 2>&1 | grep "syslog"(加 -d 调试模式)
  • 注意 maxagerotate 冲突:如果同时设了 maxage 30rotate 7,以更严格的那个为准

Ja va 应用日志的保留天数别动系统配置

Ja va 进程自己打的日志(比如 /opt/myapp/logs/app.log)通常由 logback 或 log4j2 控制,跟系统日志无关。强行用 logrotatejournalctl 去管,容易因文件被 Ja va 进程独占而失败,或造成日志丢失。

更稳妥的方式,是直接在应用自身的日志框架配置里把滚动策略设好。比如在 logback.xml 里,可以这样配置:


logs/app.%d{yyyy-MM-dd}.%i.log

100MB

30 

如果非要用系统级工具统一管理,确保 Ja va 进程已配置 prudent=false(logback)或 append=true(log4j2),且 logrotate 加了 copytruncate —— 否则 truncate 会清空正在写的文件,Ja va 不会自动重建。

本文转载于:https://www.php.cn/faq/2962523.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注