Leggere journalctl in Python con systemd-python
Il pacchetto systemd-python ci consente di accedere ai log di journaltctl.
Però non è tutto oro quel che luccica; qualche info:
- prima di tutto è systemd-python e non python-systemd; sono due pacchetti diversi
- alcune funzioni come add_match o this_boot mi sono andate in errore, e quindi non ho potuto fare alcuni filtri
- non tutti i records hanno tutti i campi; come vedete ho intercettato gli errori con try/except
Detto ciò, potete installare il pacchetto con pip:
pip install systemd-python
Qui sotto un pò di codice Python:
from systemd import journal
from datetime import datetime, timedelta
j = journal.Reader()
j.seek_realtime(datetime.now() - timedelta(minutes=60))
for entry in j:
# FIELDS
priority = 0
message = ''
pid = 0
machine_id = ''
timestamp = ''
# TAGS
appname = ''
facility = ''
hostname = ''
try:
priority = entry['PRIORITY']
message = entry['MESSAGE']
pid = entry['_PID']
machine_id = entry['_MACHINE_ID']
timestamp = entry['__REALTIME_TIMESTAMP']
appname = entry['SYSLOG_IDENTIFIER']
facility = entry['SYSLOG_FACILITY']
hostname = entry['_HOSTNAME']
except KeyError as ex:
entry[ex] = ''
print(priority, pid, hostname, machine_id, timestamp, appname, facility, message)
# print(entry)
print("--------")
Enjoy!
pythonjournalctl systemd
Commentami!