logging in plant2dxf.py, svg2dxf.py und dxf2lib.py implementiert

SVG2DXF: Inkscape-Option hinzugefügt, die mit einem SVG Parser arbeitet
This commit is contained in:
2025-07-30 16:12:52 +02:00
parent c38b9861d4
commit 97c81b466b
4 changed files with 376 additions and 128 deletions
+56
View File
@@ -0,0 +1,56 @@
import os
import sys
import logging
from pathlib import Path
def check_environment_var(env_str: str) -> Path:
"""Liefert Path aus Umgebungsvariable oder beendet mit Fehlermeldung."""
out_path = os.environ.get(env_str)
if out_path:
return Path(out_path)
msg = f"Umgebungsvariable {env_str} ist nicht gesetzt oder leer."
print(msg)
sys.exit(1)
def setup_logger(log_dir: Path, name: str = 'app') -> logging.Logger:
"""
Erstellt und konfiguriert einen Logger, der sowohl in eine Datei als auch auf die Konsole schreibt.
Die Logdatei erhält einen Zeitstempel im Namen und ist UTF-8 kodiert.
Args:
log_dir (Path): Verzeichnis für die Log-Dateien
name (str): Name des Loggers (z.B. 'plant2dxf', 'dxf2lib')
Returns:
logging.Logger: Konfigurierter Logger
"""
from datetime import datetime
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
# Vorherige Handler entfernen, um doppelte Logs zu vermeiden
for handler in logger.handlers[:]:
logger.removeHandler(handler)
# Log-Verzeichnis anlegen (falls nicht vorhanden)
log_dir.mkdir(parents=True, exist_ok=True)
# Logdatei mit Zeitstempel im Namen erzeugen
log_file = log_dir / f"{name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
file_handler = logging.FileHandler(log_file, encoding='utf-8')
file_handler.setLevel(logging.INFO)
# Handler für die Konsole
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# Einheitliches Log-Format definieren
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# Handler dem Logger hinzufügen
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger