Journald が Debian でカスタム フィールドを記録しない

Journald が Debian でカスタム フィールドを記録しない

私は次のスクリプトを Arch Linux マシンと Debian Stretch マシンの両方で実行しています。Arch Linux マシンでは、ログに記録されたランダムな値を見つけることができますが、Debian マシンでは取得できないようです。

systemdDebian で何かを別の方法で設定する必要があるかどうか知っている人はいますか? それとも、これは単に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 システム; Debian安定版にはv233がありますが、ロガーアダプタのextra=パラメータのサポートは追加されたばかりですバージョン v234

Python モジュールをアップグレードできない場合は、「raw」systemd.journal.send()API を使用します。

関連情報