|
10 | 10 |
|
11 | 11 |
|
12 | 12 | def setup_logger(name, logpth): |
13 | | - logfile = '{}-{}.log'.format(name, time.strftime('%Y-%m-%d-%H-%M-%S')) |
14 | | - logfile = osp.join(logpth, logfile) |
15 | | - FORMAT = '%(levelname)s %(filename)s(%(lineno)d): %(message)s' |
16 | | - log_level = logging.INFO |
17 | | - if dist.is_initialized() and dist.get_rank() != 0: |
18 | | - log_level = logging.WARNING |
| 13 | + rank = dist.get_rank() if dist.is_initialized() else 0 |
| 14 | + multi_gpu = dist.is_initialized() and dist.get_world_size() > 1 |
| 15 | + rank_prefix = 'rank{} '.format(rank) if multi_gpu else '' |
| 16 | + FORMAT = '{}%(levelname)s %(filename)s(%(lineno)d): %(message)s'.format(rank_prefix) |
| 17 | + |
| 18 | + if multi_gpu: |
| 19 | + obj_list = ['{}-{}.log'.format(name, time.strftime('%Y-%m-%d-%H-%M-%S')) |
| 20 | + if rank == 0 else None] |
| 21 | + dist.broadcast_object_list(obj_list, src=0) |
| 22 | + logfile = osp.join(logpth, obj_list[0]) |
| 23 | + else: |
| 24 | + logfile = osp.join(logpth, '{}-{}.log'.format(name, time.strftime('%Y-%m-%d-%H-%M-%S'))) |
| 25 | + |
| 26 | + if dist.is_initialized() and rank != 0: |
| 27 | + fh = logging.FileHandler(logfile) |
| 28 | + fh.setLevel(logging.WARNING) |
| 29 | + fh.setFormatter(logging.Formatter(FORMAT)) |
| 30 | + logging.root.setLevel(logging.WARNING) |
| 31 | + logging.root.addHandler(fh) |
| 32 | + return |
| 33 | + |
19 | 34 | try: |
20 | | - logging.basicConfig(level=log_level, format=FORMAT, filename=logfile, force=True) |
| 35 | + logging.basicConfig(level=logging.INFO, format=FORMAT, filename=logfile, force=True) |
21 | 36 | except Exception: |
22 | 37 | for hl in logging.root.handlers: logging.root.removeHandler(hl) |
23 | | - logging.basicConfig(level=log_level, format=FORMAT, filename=logfile) |
| 38 | + logging.basicConfig(level=logging.INFO, format=FORMAT, filename=logfile) |
24 | 39 | logging.root.addHandler(logging.StreamHandler()) |
25 | 40 |
|
26 | 41 |
|
|
0 commit comments