Leggere journalctl in Python con systemd-python

Mattepuffo's logo
Leggere journalctl in Python con systemd-python

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!


Condividi

Commentami!