| 123456789101112131415161718192021222324252627282930313233343536373839 |
- 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()
|