Journald protokolliert unter Debian keine benutzerdefinierten Felder

Journald protokolliert unter Debian keine benutzerdefinierten Felder

Ich habe das folgende Skript, das ich sowohl auf einem Arch Linux-Rechner als auch auf einem Debian Stretch-Rechner ausführe. Auf dem Arch Linux-Rechner kann ich den protokollierten Zufallswert finden, während ich ihn auf dem Debian-Rechner nicht abrufen kann.

Weiß jemand, ob ich in Debian etwas anders konfigurieren muss? Oder liegt das nur daran, 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 prüfen, ob die Zufallszahl protokolliert wurde, lautet:

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

Antwort1

Nein. Sie verwenden eine veraltete Version vonpython-systemd; Debian Stable hat v233, während die Unterstützung für den extra=Parameter des Logger-Adapters erst hinzugefügt wurdein Version v234.

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

verwandte Informationen