Journald protokolliert keine benutzerdefinierten Felder in Debian

663
Varun Madiath

Ich habe das folgende Skript, das ich sowohl auf einer Arch Linux-Maschine als auch auf einer Debian-Stretch-Maschine ausführen kann. Auf dem Arch Linux-Rechner kann ich den zufälligen Wert finden, der protokolliert wurde, während ich ihn anscheinend nicht auf dem Debian-Rechner abrufen kann.

Weiß jemand, ob ich etwas in Debian anders konfigurieren muss? Oder wenn das nur daran liegt, dass ich eine ältere Version von systemdDebian verwende?

import logging import random  from systemd.journal import JournalHandler  LOGGER = logging.getLogger("this_is_a_logger") JOURNAL_HANDLER = JournalHandler()  JOURNAL_HANDLER.setFormatter(logging.Formatter("%(message)s"))  # add the journald handler to the current logger LOGGER.addHandler(JOURNAL_HANDLER)  # optionally set the logging level LOGGER.setLevel(logging.DEBUG)  LOGGER.info( "test log event to systemd!", extra={"RANDOM_NUMBER": random.randint(0, 10), "LEVEL": "INFO"}, ) 

Der Befehl, den ich verwende, um zu überprüfen, ob die Zufallszahl protokolliert wurde, lautet:

journalctl -S "10 minutes ago" \ LOGGER="this_is_a_logger" \ -o json-pretty \ | jq -r ".RANDOM_NUMBER" 
0

1 Antwort auf die Frage

1
grawity

Nein. Sie verwenden eine veraltete Version von Python-Systemd . Debian stable hat v233, während die Unterstützung für den extra=Parameter des Loggeradapters nur in Version v234 hinzugefügt wurde .

Wenn Sie das Python-Modul nicht aktualisieren können, verwenden Sie die "rohe" systemd.journal.send()API.