Version 1.0
This commit is contained in:
39
log_formatter.py
Normal file
39
log_formatter.py
Normal file
@@ -0,0 +1,39 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user