"""Логирование для 152-ФЗ Scanner. Заменяет print() на структурированный вывод с уровнями и файлом.""" import logging import sys from pathlib import Path from datetime import datetime LOG_DIR = Path(__file__).parent / "logs" LOG_DIR.mkdir(exist_ok=True) def setup_logger(name: str = "scanner", level: int = logging.INFO) -> logging.Logger: """Настроить логгер с выводом в консоль + файл.""" logger = logging.getLogger(name) logger.setLevel(level) if logger.handlers: return logger # Формат: время [уровень] сообщение fmt = logging.Formatter( "%(asctime)s [%(levelname)s] %(message)s", datefmt="%H:%M:%S", ) # Консоль console = logging.StreamHandler(sys.stdout) console.setFormatter(fmt) logger.addHandler(console) # Файл today = datetime.now().strftime("%Y%m%d") file_handler = logging.FileHandler(LOG_DIR / f"app_{today}.log", encoding="utf-8") file_handler.setFormatter(fmt) logger.addHandler(file_handler) return logger # Глобальный экземпляр log = setup_logger()