我试图使用systemd库在Python中模拟这个shell命令 http://www.freedesktop.org/software/systemd/python-systemd/journal.html
我实际上是试图在Python中模拟这个命令.
journalctl --since=-5m --no-pager
Run Code Online (Sandbox Code Playgroud)
我已经看到其他人通过调用日志可执行文件在Python中执行此操作,但这是一个非常糟糕的方法.
我根据上面链接的文档编写了这个简单的脚本
import select
from systemd import journal
j = journal.Reader()
j.log_level(journal.LOG_INFO)
# j.add_match(_SYSTEMD_UNIT="systemd-udevd.service")
j.seek_tail()
j.get_next()
while j.get_next():
for entry in j:
if entry['MESSAGE'] != "":
print(str(entry['__REALTIME_TIMESTAMP'] )+ ' ' + entry['MESSAGE'])
Run Code Online (Sandbox Code Playgroud)
这里有一些问题
理想情况下,我希望仅根据一组过滤器/匹配来跟踪此日志,以模拟命令'journalctl -f',但我只需要首先解决此问题.我想最终得到这样的东西,但它也不起作用.
import select
from systemd import journal
j = journal.Reader()
j.log_level(journal.LOG_INFO)
# j.add_match(_SYSTEMD_UNIT="systemd-udevd.service")
j.seek_tail()
p = select.poll()
p.register(j, j.get_events())
while p.poll():
while j.get_next():
for entry in j:
if entry['MESSAGE'] != "":
print(str(entry['__REALTIME_TIMESTAMP'] )+ ' ' + entry['MESSAGE'])
Run Code Online (Sandbox Code Playgroud)