Journald 没有在 Debian 上记录自定义字段

Journald 没有在 Debian 上记录自定义字段

我有以下脚本,可在 Arch Linux 机器和 Debian 拉伸机器上运行。在 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。

相关内容