logging optimiert

This commit is contained in:
Czechman 2025-02-16 15:55:43 +01:00
parent 4c0b6512f3
commit b854dfa567
1 changed files with 39 additions and 4 deletions

View File

@ -1,16 +1,51 @@
# bundle_checker.py # bundle_checker.py
import logging import logging
import os
from datetime import datetime
from bundle_parser import BundleParser from bundle_parser import BundleParser
from models import Base, Bundle, BundleVersion, BundleSalesHistory, BundleItem from models import Base, Bundle, BundleVersion, BundleSalesHistory, BundleItem
import requests
# Konfiguriere das Logging # === Logging-Konfiguration ===
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s [%(levelname)s] %(message)s")
# Eigener Formatter, der lange Nachrichten für den Konsolen-Output kürzt
class TruncateFormatter(logging.Formatter):
def __init__(self, fmt=None, datefmt=None, max_length=300):
super().__init__(fmt, datefmt)
self.max_length = max_length
def format(self, record):
message = super().format(record)
if len(message) > self.max_length:
return message[:self.max_length] + " ... [truncated]"
return message
# Erstelle einen Logger
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# Datei-Handler: Schreibt alle Logeinträge in eine Datei mit Zeitstempel im Dateinamen
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
log_filename = f"bundle_checker_{timestamp}.log"
file_handler = logging.FileHandler(log_filename)
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(message)s", "%Y-%m-%d %H:%M:%S")
file_handler.setFormatter(file_formatter)
# Konsolen-Handler: Gibt verkürzte Nachrichten aus
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_formatter = TruncateFormatter("%(asctime)s [%(levelname)s] %(message)s", "%Y-%m-%d %H:%M:%S", max_length=300)
console_handler.setFormatter(console_formatter)
# Füge beide Handler zum Logger hinzu
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# === Ende Logging-Konfiguration ===
def main(): def main():
overview_url = "https://www.humblebundle.com/bundles" overview_url = "https://www.humblebundle.com/bundles"
# Hier kannst du zwischen "books", "games" und "software" wählen: # Wähle hier die gewünschte Kategorie, z.B. "books", "games" oder "software"
category = "books" category = "books"
logger.info("Extrahiere Bundle-URLs von der Übersichtsseite ...") logger.info("Extrahiere Bundle-URLs von der Übersichtsseite ...")