
У меня есть следующий скрипт, который я запускаю как на машине Arch Linux, так и на машине Debian stretch. На машине Arch Linux я могу найти случайное значение, которое было записано в журнал, тогда как на машине Debian я не могу его извлечь.
Кто-нибудь знает, нужно ли мне что-то настроить в Debian по-другому? Или это просто потому, что я использую старую версию в systemd
Debian?
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.