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