Python: Logging mit journald

Das Logging unter Linux wie Raspberry Pi OS ist zentral organisiert und sammelt System- und Anwendungsprotokolle in der Regel über „systemd-journald“. Zusätzlich werden viele Logdateien klassisch in Dateien gespeichert.
Dank dem integrierten Logging lassen sich Programm- und Systemereignisse nachverfolgen, Fehler analysieren und auch Sicherheitsvorfälle untersuchen.
Die Idee ist, dass man dieses zentrale Logging-System in den eigenen Python-Anwendungen verwendet.

Vorteile von journald

  1. Strukturierte Logs: Logs enthalten strukturierte Metadaten.
  2. Zentrale Logverwaltung: Alle Logs befinden an einem Ort.
  3. Integration mit systemd: Direkte Verknüpfung mit Services.

Anleitung

  • Virtuelle Python-Umgebung erzeugen
  • Programmcode fürs Logging (Beispiel)
  • Logs mit journalctl anzeigen

Virtuelle Python-Umgebung erzeugen

Hinweis: Bei der folgenden Installation erstellen wir für das Python-Programm eine virtuelle Umgebung mit „venv“ (Virtual Environment), in die die Python-Pakete installiert werden.

Zuerst legen wir im Home-Verzeichnis „/home/pi“ ein Projektverzeichnis mit dem Namen „py_log“ an und wechseln dorthin.

mkdir /home/pi/py_log
cd /home/pi/py_log

In diesem Verzeichnis erstellen wir eine virtuelle Python-Umgebung, in die wir anschließend alles installieren, ohne das System zu verändern.

python3 -m venv venv

Die Umgebung aktivieren:

source venv/bin/activate

Ab jetzt steht vor der Eingabeaufforderung „(venv)“. Damit wird gekennzeichnet, dass alles weitere nur in die virtuelle Umgebung installiert wird.

Im nächsten Schritt installieren wir zusätzliche Pakete in die virtuelle Umgebung. Dafür verwenden wir pip (Package Installer for Python).

pip install systemd-python

Danach können wir die virtuelle Umgebung wieder deaktivieren.

deactivate

Programmcode fürs Logging

Wir wollen das Logging mit journald in Python testen. Dazu erstellen wir eine Datei und fügen den Programmcode hinzu.

Wir öffnen eine neue Datei:

nano py_log.py

In dem sich öffnenden Editor fügen wir folgenden Programmcode ein:

# Bibliotheken laden
import time
from systemd import journal

# Hauptprogramm mit Fehlerbehandlung
try:
    while True:
		journal.send('Programm läuft', SYSLOG_IDENTIFIER='py_log', PRIORITY=6)
		print('Programm läuft')
		time.sleep(60)
except KeyboardInterrupt:
    pass
except Exception as e:
    print('Fehler:', e)

Mit Strg + O, Return und Strg + X die Datei speichern und schließen.

Dann kannst du das Programm testweise starten:

venv/bin/python3 py_log.py

Damit man die Funktionsweise des Programms testen kann, sollte man es ein paar Minuten laufen lassen.

Dann mit Strg + C das Programm beenden.

Logs mit journalctl anzeigen

Folgendes Kommando zeigt das Log an:

journalctl -t py_log

Mit journalctl kann man die Logs komfortabel anzeigen, filtern, durchsuchen und analysieren. Für das gesamte System als auch gezielt für einzelne Dienste und Anwendungen.

Raspberry Pi als Logging-Modul für Mikrocontroller

Mikrocontroller stoßen beim Logging an Grenzen, da oft keine integrierte Echtzeituhr für korrekte Zeitstempel vorhanden ist und der Speicherplatz begrenzt ist.
Eine Lösung ist ein externes Logging-Modul bei dem der Mikrocontroller nur die Messdaten erfasst. Ein Raspberry Pi übernimmt über UART die Speicherung und Verarbeitung im Linux-System.
So werden Datenerfassung und Speicherung getrennt: Der Mikrocontroller bleibt einfach und effizient, während das externe System große Datenmengen zuverlässig mit Zeitstempeln speichert und flexibel weiterverarbeitet.

Weitere verwandte Themen:

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!

Frag Elektronik-Kompendium.de