Journald не регистрирует пользовательские поля в Debian

Journald не регистрирует пользовательские поля в Debian

У меня есть следующий скрипт, который я запускаю как на машине Arch Linux, так и на машине Debian stretch. На машине Arch Linux я могу найти случайное значение, которое было записано в журнал, тогда как на машине Debian я не могу его извлечь.

Кто-нибудь знает, нужно ли мне что-то настроить в Debian по-другому? Или это просто потому, что я использую старую версию в systemdDebian?

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"},
)

Команда, которую я использую для проверки того, было ли записано случайное число, выглядит так:

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

решение1

Нет. Вы используете устаревшую версиюpython-systemd; В стабильной версии Debian имеется версия v233, а поддержка параметра адаптера логгера extra=была только добавленав версии v234.

Если вы не можете обновить модуль Python, используйте «сырой» systemd.journal.send()API.

Связанный контент