| import os | |
| import json | |
| import logging | |
| from logging.handlers import RotatingFileHandler | |
| from datetime import datetime, timezone | |
| from typing import Any, Dict, List, Optional | |
| def setup_logger(name: str) -> logging.Logger: | |
| """ | |
| Creates and returns a standard Python logger that writes to a rotating file. | |
| Max file size: 5MB. Keeps up to 3 backups. | |
| """ | |
| logger = logging.getLogger(name) | |
| if not logger.handlers: | |
| logger.setLevel(logging.INFO) | |
| log_dir = "logs" | |
| if not os.path.exists(log_dir): | |
| os.makedirs(log_dir) | |
| file_handler = RotatingFileHandler( | |
| os.path.join(log_dir, "app.log"), | |
| maxBytes=5 * 1024 * 1024, | |
| backupCount=3 | |
| ) | |
| formatter = logging.Formatter('%(asctime)s | %(name)s | %(levelname)s | %(message)s') | |
| file_handler.setFormatter(formatter) | |
| logger.addHandler(file_handler) | |
| return logger | |