如何仅清除特定单位的journalctl条目?


19

我花了几天时间编写一个python脚本,并为其创建一个systemd单元文件。在测试过程中,该脚本记录了许多要记录的错误。现在,我想清除日志中的那些错误。

有多种清除整个日志的方法,如下所述:如何清除journalctl, 包括使用journalctl --vacuum-time=2d,使用journalctl --vacuum-size=500M和临时将SystemMaxUse=/etc/systemd/journald.conf中的值设置为非常低的值。

所有这些似乎清除了整个日志,影响了所有单元。我只需要清除单个单元的条目。这可能吗?


一种可能的方法是使用libsystemd的日记功能编写程序,以重写日记文件而不删除要删除的条目。
Mathias Rav

Answers:


6

在要从中删除条目的日志文件上使用我的Python 3程序copy_journal.py/var/log/journal

例如,为以下项制作system.journal无日志条目的副本NetworkManager.service

$ journalctl --file=system.journal | wc
    167    1934   18825
$ journalctl --file=system.journal | grep -v NetworkManager | wc
     77     881    8421
$ python3 copy_journal.py --remove-unit=NetworkManager.service system.journal system-without-nm.journal
$ journalctl --file=system-without-nm.journal | wc
     77     881    8421

-1

我认为这不太可能,因为按照journalctl手册页所述,“输出是从所有可访问的日记文件中交错出来的,无论它们是旋转的还是当前正在写入的”。

但是,您可以按单位-'journalctl -u some.service'对其进行过滤,然后尝试使用自己的脚本使用cron从日志中删除日志条目。


7
听起来您似乎暗示着有一种方法可以从日记中删除单个日志条目。有一个吗?那会很有帮助。
2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.