(output_dir, dist_rank=0, name='')
| 14 | |
| 15 | @functools.lru_cache() |
| 16 | def create_logger(output_dir, dist_rank=0, name=''): |
| 17 | # create logger |
| 18 | logger = logging.getLogger(name) |
| 19 | logger.setLevel(logging.DEBUG) |
| 20 | logger.propagate = False |
| 21 | |
| 22 | # create formatter |
| 23 | fmt = '[%(asctime)s %(name)s] (%(filename)s %(lineno)d): %(levelname)s %(message)s' |
| 24 | color_fmt = colored('[%(asctime)s %(name)s]', 'green') + \ |
| 25 | colored('(%(filename)s %(lineno)d)', 'yellow') + ': %(levelname)s %(message)s' |
| 26 | |
| 27 | # create console handlers for master process |
| 28 | if dist_rank == 0: |
| 29 | console_handler = logging.StreamHandler(sys.stdout) |
| 30 | console_handler.setLevel(logging.DEBUG) |
| 31 | console_handler.setFormatter( |
| 32 | logging.Formatter(fmt=color_fmt, datefmt='%Y-%m-%d %H:%M:%S')) |
| 33 | logger.addHandler(console_handler) |
| 34 | |
| 35 | # create file handlers |
| 36 | file_handler = logging.FileHandler(os.path.join(output_dir, f'log_rank{dist_rank}.txt'), mode='a') |
| 37 | file_handler.setLevel(logging.DEBUG) |
| 38 | file_handler.setFormatter(logging.Formatter(fmt=fmt, datefmt='%Y-%m-%d %H:%M:%S')) |
| 39 | logger.addHandler(file_handler) |
| 40 | |
| 41 | return logger |
no outgoing calls
no test coverage detected