From 8739320bb07a6d6cb6a0731938cab41fa4a49689 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Wed, 30 Jul 2025 22:33:33 +0200 Subject: [PATCH] Initial journalser --- .gitmodules | 3 +++ journaliser | 6 ++++++ journaliser.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ report | 1 + reposinit | 4 ++++ 5 files changed, 58 insertions(+) create mode 100644 .gitmodules create mode 100755 journaliser create mode 100644 journaliser.py create mode 160000 report create mode 100755 reposinit diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..98f8bb5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "report"] + path = report + url = https://git.mount-mockery.de/pylib/report.git diff --git a/journaliser b/journaliser new file mode 100755 index 0000000..247db6f --- /dev/null +++ b/journaliser @@ -0,0 +1,6 @@ +#!/bin/bash +# +BASEPATH=$(dirname $0) + +python3 $BASEPATH/journaliser.py $* + diff --git a/journaliser.py b/journaliser.py new file mode 100644 index 0000000..5e93775 --- /dev/null +++ b/journaliser.py @@ -0,0 +1,44 @@ +import logging +import report +import subprocess + + +logger = logging.getLogger("root") +report.add_handler_socket(logger) + + +class mkrecord(object): + def __init__(self, line): + self.line = line.strip("\n") + self.module = line.split(" ")[4].split("[")[0] + +if __name__ == "__main__": + command = ['journalctl', '-fn', '500'] + # Start the process using Popen + try: + with subprocess.Popen( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True, # Decode stdout/stderr as text using default encoding + bufsize=1 # Use line-buffering + ) as process: + print(f"--- Following journal output for: {' '.join(command)} ---") + print("--- Press Ctrl+C to exit ---") + + # Read from stdout line by line as it's generated + for line in process.stdout: + record = mkrecord(line) + l = logger.getChild(record.module) + if "crit" in record.line.lower(): + l.critical(record.line) + elif "error" in record.line.lower(): + l.error(record.line) + elif "warn" in record.line.lower(): + l.warning(record.line) + elif "info" in record.line.lower(): + l.info(record.line) + else: + l.debug(record.line) + except KeyboardInterrupt: + print(" Bye...") diff --git a/report b/report new file mode 160000 index 0000000..c9642f1 --- /dev/null +++ b/report @@ -0,0 +1 @@ +Subproject commit c9642f1a2b57a4e9fb2d294c5f9e7bee09e8fd72 diff --git a/reposinit b/reposinit new file mode 100755 index 0000000..81d459c --- /dev/null +++ b/reposinit @@ -0,0 +1,4 @@ +#!/bin/sh +# +git submodule init +git submodule update