Files
Pythron-Script-Server/log_formatter.py
2026-01-19 16:35:12 +01:00

39 lines
1.5 KiB
Python

import sys
import re
# Regex zum Finden des Script-Namens im Command
# Sucht nach: job.command="... /scripts/(DATEINAME)"
script_pattern = re.compile(r'job\.command=".*?/scripts/([^"]+)"')
# Regex zum Finden der eigentlichen Nachricht
# Sucht nach: msg="NACHRICHT"
msg_pattern = re.compile(r'msg="(.*?)"')
def clean_log():
# Liest Standard-Input (Pipe von Supercronic)
for line in sys.stdin:
# Wir interessieren uns nur für Zeilen, die von unseren Scripts kommen
# (channel=stdout oder channel=stderr)
if 'channel=stdout' in line or 'channel=stderr' in line:
# Script Namen extrahieren
script_match = script_pattern.search(line)
script_name = script_match.group(1) if script_match else "Unknown"
# Nachricht extrahieren
msg_match = msg_pattern.search(line)
message = msg_match.group(1) if msg_match else line.strip()
# Gewünschtes Format ausgeben: [script.py] Nachricht
print(f"[{script_name}] {message}")
# WICHTIG: Sofort flushen, damit Logs nicht verzögert erscheinen
sys.stdout.flush()
elif 'level=error' in line or 'level=warning' in line:
# System-Fehler von Supercronic (z.B. Syntaxfehler im Cron) trotzdem anzeigen
print(f"[SYSTEM] {line.strip()}")
sys.stdout.flush()
if __name__ == "__main__":
clean_log()