Zum Hauptinhalt springen

Mini-Projekt: Log-Analyse

Anforderungen

  • Beispieldatei app.log erzeugen
  • Generator liest Zeilen
  • Filter (z. B. error/warn)
  • Anzahl + Ausgabe der Treffer
  • optional Pipeline-Funktionen

Beispiellösung

Lösung anzeigen
from pathlib import Path

log = Path("app.log")
log.write_text(
"INFO start\nWARNING disk low\nERROR boom\nINFO ok\nERROR again\n",
encoding="utf-8",
)

def zeilen(pfad: Path):
with pfad.open(encoding="utf-8") as f:
for z in f:
yield z.strip()

def mit_level(zeilen, level: str):
level = level.upper()
for z in zeilen:
if z.upper().startswith(level):
yield z

errors = list(mit_level(zeilen(log), "ERROR"))
print("Errors:", len(errors))
for e in errors:
print("-", e)

Kapitel 44 geschafft!

Als Nächstes: Dekoratoren und Kontextmanager.