import os import logging from datetime import datetime from accelerate.logging import get_logger def set_logger(config, accelerator, prefix=None): logger = get_logger(__name__) logger.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s : %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') console = logging.StreamHandler() console.setLevel(logging.INFO) console.setFormatter(formatter) logger.logger.addHandler(console) if accelerator.is_main_process: logging_path = os.path.join(config.ckpt_dir, config.task_name, 'logs') if not os.path.exists(logging_path): os.makedirs(logging_path) log_file = os.path.join(logging_path, f"{f'[{prefix}]'}{datetime.now().strftime('%Y-%m-%d_%H:%M:%S')}.log") fh = logging.FileHandler(log_file, mode="w", encoding="utf-8") fh.setFormatter(formatter) fh.setLevel(logging.INFO) logger.logger.addHandler(fh) logger.info(accelerator.state, main_process_only=False) return logger