import logging
def create_logger(log_file=None, rank=0, log_level=logging.INFO,time=True):
print("rank: ", rank)
logger = logging.getLogger(__name__)
logger.setLevel(log_level if rank == 0 else 'ERROR') # 只有当rank=0时,才会输出info信息
if time:
datefmt = '%Y-%m-%d %H:%M:%S'
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s',datefmt=datefmt)
else:
formatter = logging.Formatter('%(message)s')
console = logging.StreamHandler()
console.setLevel(log_level if rank == 0 else 'ERROR')
console.setFormatter(formatter)
logger.addHandler(console)
if log_file is not None:
file_handler = logging.FileHandler(filename=log_file)
file_handler.setLevel(log_level if rank == 0 else 'ERROR')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.propagate = False
return logger
创建logger
log_file_path=os.path.join(args.output_dir,'log.txt')
logger = create_logger(log_file=log_file_path, rank=rank)
分行打印args
# 打印参数
message = '\n'.join([f'{k:<20}: {v}' for k, v in vars(args).items()])
logger.info(message)