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 可能完全不触发清理。

logrotate 的保留天数怎么调

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

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

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

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

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

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删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。