| import logging | |
| import sys | |
| from datetime import datetime | |
| from pathlib import Path | |
| def setup_logger(name: str = "bot", log_dir: str = "logs") -> logging.Logger: | |
| Path(log_dir).mkdir(exist_ok=True) | |
| timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") | |
| log_file = Path(log_dir) / f"bot_{timestamp}.log" | |
| logger = logging.getLogger(name) | |
| logger.setLevel(logging.DEBUG) | |
| if logger.handlers: | |
| logger.handlers.clear() | |
| fh = logging.FileHandler(log_file, encoding="utf-8") | |
| fh.setLevel(logging.DEBUG) | |
| fh.setFormatter(logging.Formatter("%(asctime)s [%(levelname)-8s] %(message)s")) | |
| ch = logging.StreamHandler(sys.stdout) | |
| ch.setLevel(logging.INFO) | |
| ch.setFormatter(logging.Formatter("[%(levelname)s] %(message)s")) | |
| logger.addHandler(fh) | |
| logger.addHandler(ch) | |
| return logger | |