![如何配置日志以丢弃早于特定时间跨度的条目](https://linux22.com/image/127688/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E6%97%A5%E5%BF%97%E4%BB%A5%E4%B8%A2%E5%BC%83%E6%97%A9%E4%BA%8E%E7%89%B9%E5%AE%9A%E6%97%B6%E9%97%B4%E8%B7%A8%E5%BA%A6%E7%9A%84%E6%9D%A1%E7%9B%AE.png)
来自文档我知道我可以配置
- 日记之后的时间文件通过删除
MaxRetentionSec
。 - 日记之后的时间文件通过 旋转
MaxFileSec
。
然而,我的目标是以一种方式配置日志,使所有日志条目都存储在一个文件中,时间跨度为一年。年长的条目应该被丢弃。
我目前的解决方法是
MaxRetentionSec=1year
MaxFileSec=1month
然而,这有两个主要缺点。
- 该日志每月都会轮换一次,因此访问较旧的条目很麻烦。
- 每次一年到期时,Journald 都会丢弃一整月,而不是仅仅丢弃一天。
是否可以将日志配置为按照目标中描述的方式运行?
答案1
刚刚在 askubuntu stackexchange 上找到了这个精彩的答案:https://askubuntu.com/a/1012913/36168
回顾一下,作者建议设置一个 cronjob 定期运行,例如,对于您的用例,每天运行:
$ journalctl --vacuum-time=1y
参考:
答案2
然而,我的目标是以一种方式配置日志,使所有日志条目都存储在一个文件中,时间跨度为一年。
这意味着该文件将在 1 年后轮换,并在最后一个条目超过 1 年后被删除。
没有办法做你想做的事。您必须执行syslog
和操作logrotate
:轮换到多个文件,并删除最旧的文件。如果您不想浪费一个月的日志负载空间,则可以更频繁地轮换。
该日志每月都会轮换,因此访问较旧的条目很麻烦
那个怎么样?该journalctl
实用程序无缝读取所有可用的日志文件。