refaktor logging
logging na std i debug do pliku
This commit is contained in:
58
logging_config.py
Normal file
58
logging_config.py
Normal 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
12
main.py
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user