From 4c5371c07fd0282969789abd1421e6220d0d7335 Mon Sep 17 00:00:00 2001 From: elpatron Date: Wed, 23 Jul 2025 14:23:26 +0200 Subject: [PATCH] Logging minimiert --- README.md | 4 ++-- app.py | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 919dcb2..9f9d256 100644 --- a/README.md +++ b/README.md @@ -124,9 +124,9 @@ Finde mal eine Datumsrechner- Webapp, die nicht völlig Werbe- und Tracking vers Dieses Projekt wurde zu nahezu 100% mit Unterstützung künsticher Intelligenz (*[Vibe Coding](https://de.wikipedia.org/wiki/Vibe_Coding)*) erstellt. Das Grundgerüst war nach ca. 45 Minuten fertig gestellt, insgesamt hat die Entwicklung des Projekts ca. 4 Stunden Zeit beansprucht. -### Statistik-Erfassung +### Statistik-Erfassung, Logging -Es werden keine IP-Adressen oder sonstigen persönlichen Daten gespeichert, lediglich die Zahl der Aufrufe der Funktionen in einer kumulierten Darstellung. +Es werden keine IP-Adressen oder sonstigen persönlichen Daten gespeichert, lediglich die Zahl der Aufrufe der Funktionen in einer kumulierten Darstellung. Die Logdatei enthält nur Einträge der letzten sieben Tage. ## Lizenz diff --git a/app.py b/app.py index b061906..d8997c7 100644 --- a/app.py +++ b/app.py @@ -16,7 +16,24 @@ def index(): # Rudimentäres Logging für Page Impressions log_dir = 'log' os.makedirs(log_dir, exist_ok=True) - with open(os.path.join(log_dir, 'pageviews.log'), 'a', encoding='utf-8') as f: + log_path = os.path.join(log_dir, 'pageviews.log') + # Logfile bereinigen: nur Zeilen der letzten 7 Tage behalten + if os.path.exists(log_path): + now = datetime.now() + lines_new = [] + with open(log_path, encoding='utf-8') as f: + for line in f: + try: + date_str = line[:10] + date = datetime.strptime(date_str, '%Y-%m-%d') + if (now - date).days <= 7: + lines_new.append(line) + except Exception: + # Zeile ohne Datum behalten (zur Sicherheit) + lines_new.append(line) + with open(log_path, 'w', encoding='utf-8') as f: + f.writelines(lines_new) + with open(log_path, 'a', encoding='utf-8') as f: from datetime import datetime as dt f.write(f"{dt.now().isoformat()} PAGEVIEW\n") tage = werktage = wochentag = datumsrechnung = werktagsrechnung = kw_berechnen = kw_datum = wochen_monate = None @@ -24,7 +41,7 @@ def index(): if request.method == 'POST': action = request.form.get('action') # Funktions-Logging - with open(os.path.join(log_dir, 'pageviews.log'), 'a', encoding='utf-8') as f: + with open(log_path, 'a', encoding='utf-8') as f: from datetime import datetime as dt f.write(f"{dt.now().isoformat()} FUNC: {action}\n") if action == 'tage':