| import logging | |
| import os | |
| from datetime import datetime | |
| def setup_logger(name: str, log_dir: str, rank: int = 0) -> logging.Logger: | |
| os.makedirs(log_dir, exist_ok=True) | |
| logger = logging.getLogger(name) | |
| logger.setLevel(logging.INFO if rank == 0 else logging.WARNING) | |
| logger.handlers.clear() | |
| formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") | |
| if rank == 0: | |
| file_handler = logging.FileHandler(os.path.join(log_dir, f"{name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log")) | |
| file_handler.setFormatter(formatter) | |
| console_handler = logging.StreamHandler() | |
| console_handler.setFormatter(formatter) | |
| logger.addHandler(file_handler) | |
| logger.addHandler(console_handler) | |
| return logger | |