refaktor logging

logging na std i debug do pliku
This commit is contained in:
2025-11-03 09:16:47 +01:00
parent 820db917ce
commit 5b40b4b76c
2 changed files with 60 additions and 10 deletions

58
logging_config.py Normal file
View File

@@ -0,0 +1,58 @@
import logging
import sys
import os
import datetime
def setup_logging():
"""Konfiguruje zaawansowane logowanie z dwoma handlerami i czyszczeniem starych logów."""
# 1. Pobierz główny logger, wyczyść istniejące handlery i ustaw najniższy poziom (DEBUG)
logger = logging.getLogger()
if logger.hasHandlers():
logger.handlers.clear()
logger.setLevel(logging.DEBUG)
# 2. Utwórz katalog 'logs', jeśli nie istnieje
LOGS_DIR = "logs"
if not os.path.exists(LOGS_DIR):
os.makedirs(LOGS_DIR)
# 3. Stwórz i skonfiguruj handler dla konsoli (poziom INFO)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)
console_formatter = logging.Formatter('%(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)
# 4. Stwórz i skonfiguruj handler dla pliku (poziom DEBUG)
log_filename = datetime.datetime.now().strftime("debug_%Y-%m-%d_%H-%M-%S.log")
file_handler = logging.FileHandler(os.path.join(LOGS_DIR, log_filename))
file_handler.setLevel(logging.DEBUG)
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)
def cleanup_old_logs(log_dir="logs", retention_days=7):
"""Usuwa pliki logów starsze niż określona liczba dni."""
logging.info(f"Rozpoczynam czyszczenie starych logów (starszych niż {retention_days} dni)...")
try:
now = datetime.datetime.now()
cutoff = now - datetime.timedelta(days=retention_days)
files_deleted = 0
for filename in os.listdir(log_dir):
file_path = os.path.join(log_dir, filename)
# Upewnij się, że to plik i nie jest to aktualnie otwarty plik logu
if os.path.isfile(file_path) and filename != os.path.basename(file_handler.baseFilename):
file_mod_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
if file_mod_time < cutoff:
os.remove(file_path)
files_deleted += 1
logging.info(f"Usunięto stary plik logu: {filename}")
if files_deleted == 0:
logging.info("Nie znaleziono starych logów do usunięcia.")
except Exception as e:
logging.warning(f"Wystąpił błąd podczas czyszczenia starych logów: {e}")
# 5. Uruchom funkcję czyszczącą
cleanup_old_logs(LOGS_DIR)
logging.info("Logging został skonfigurowany.")

12
main.py
View File

@@ -1,20 +1,12 @@
import logging
import sys
from gsheet_api import GSheetAPI
# Configure logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
stream=sys.stdout,
)
from logging_config import setup_logging
from mayo import MayoSession
from config import MAYO_URL, LOGIN, PASSWORD
from workflow import select_sheet, get_sheet_data, save_results
from processing import process_all_rows
def main():
setup_logging()
gsheet_api = GSheetAPI()
sheet_name = select_sheet()