如何在python中导入DNF包下的systemd ?



我正在尝试从默认的文件处理程序移动DNF日志记录(/var/log/dnf.log)到JournalHandler作为任务的一部分。

我的.py

下面的基本代码片段
import sys
import logging
from systemd.journal import JournalHandler
log = logging.getLogger('demo')
log.propagate = False
log.addHandler(JournalHandler())
log.setLevel(logging.INFO)

但是我看到下面的错误,

from systemd import journal
ImportError: No module named 'systemd'
  • 我正在使用Yocto交叉编译器
  • 我已经有了下面的配置
inherit systemd
SYSTEMD_AUTO_ENABLE = "enable"
DISTRO_FEATURES_append = " systemd python3-systemd"

我的系统已经支持systemd,问题是如何将systemd与DNF集成

ps -ef | grep systemd
root      2194     1  0 14:34 ?        00:00:01 /lib/systemd/systemd-journald
root      3567     1  0 14:34 ?        00:00:00 /lib/systemd/systemd-udevd
message+  3799     1  0 14:34 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root      3878     1  0 14:34 ?        00:00:00 /lib/systemd/systemd-logind
guest     7141     1  2 14:36 ?        00:00:00 /lib/systemd/systemd --user
guest     7174  7147  0 14:36 ttymxc3  00:00:00 grep --color=auto systemd

这个问题有解决办法吗?

我尝试了Yocto继承。导入sys和logging

也许这行得通:

import sys
import logging
try:
from systemd import journal
log = logging.getLogger('demo')
log.propagate = False
log.addHandler(JournalHandler())
log.setLevel(logging.INFO)
except ImportError:
print("No module named 'systemd'")

最新更新