39 lines
1.5 KiB
Python
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() |