Wie lösche ich Journalbucheinträge nur für eine bestimmte Einheit?

17

Ich habe ein paar Tage damit verbracht, ein Python-Skript zu schreiben und eine systemd-Unit-Datei dafür zu erstellen. Während des Tests protokollierte das Skript viele Fehler im Journal. Ich möchte diese Fehler jetzt, da ich fertig bin, aus dem Journal löschen.

Es gibt verschiedene Möglichkeiten, das gesamte Journal zu löschen, wie hier beschrieben: So löschen Sie journalctl, einschließlich der Verwendung journalctl --vacuum-time=2d, Verwendung journalctl --vacuum-size=500Mund vorübergehenden Einstellung SystemMaxUse=in /etc/systemd/journald.conf auf einen sehr niedrigen Wert.

All dies scheint das gesamte Journal zu löschen, was sich auf alle Einheiten auswirkt. Ich muss nur die Einträge für eine einzelne Einheit löschen. Ist das möglich?

Tal
quelle
Ein möglicher Ansatz besteht darin, ein Programm mit den Journalfunktionen von libsystemd zu schreiben , um die Journaldatei ohne die zu entfernenden Einträge neu zu schreiben.
Mathias Rav

Antworten:

5

Verwenden Sie mein Python 3-Programm copy_journal.py für die Journaldateien, /var/log/journalaus denen Sie Einträge entfernen möchten.

Zum Beispiel, um eine Kopie system.journalohne Protokolleinträge zu erstellen für 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
Mathias Rav
quelle
-1

Ich glaube nicht, dass es möglich ist, denn laut journalctl-Manpage "wird die Ausgabe von allen zugänglichen Journaldateien verschachtelt, unabhängig davon, ob sie gedreht oder gerade geschrieben werden".

Sie können es jedoch nach einer Einheit filtern - 'journalctl -u some.service' und dann versuchen, die Protokolleinträge mit Ihrem eigenen Skript mit cron aus dem Journal zu entfernen.

Recoba20
quelle
6
Es hört sich so an, als ob Sie implizieren, dass es eine Möglichkeit gibt, einzelne Protokolleinträge aus Journald zu löschen. Ist dort eines? Das wäre sehr hilfreich.
Tal