Source code for GOOD.utils.logger

r"""A logger related utils file: tqdm style, logger loader.
"""
import os
from datetime import datetime

from cilog import create_logger
from torch.utils.tensorboard import SummaryWriter

pbar_setting = {'colour': '#a48fff', 'bar_format': '{l_bar}{bar:20}{r_bar}',
                'dynamic_ncols': True, 'ascii': '░▒█'}

from GOOD.utils.config_reader import Union, CommonArgs, Munch


[docs]def load_logger(config: Union[CommonArgs, Munch], sub_print=True): r""" Logger loader Args: config (Union[CommonArgs, Munch]): munchified dictionary of args (:obj:`config.log_path`, :obj:`config.tensorboard_logdir`, :obj:`config.log_file`) sub_print (bool): Whether the logger substitutes general print function. If Ture, logger.info will be equal to print(f'#IN#Message'), where #IN# represents info. Similarly, other level of log can be used by adding prefixes (Not capital sensitive): Debug: #d#, #De#, #Debug#, etc. Info: #I#, #In#, #inf#, #INFO#, etc. Important: #IM#, #important#, etc. Warning: #W#, #war#, etc. Error: #E#, #err#, etc. Critical: #C#, #Cri#, #critical#, etc. If there is no prefix, the general print function will be used. Returns: [cilog Logger, tensorboard summary writer] """ if sub_print: print("This logger will substitute general print function") logger = create_logger(name='GNN_log', file=config.log_path, enable_mail=False, sub_print=sub_print) current_time = datetime.now().strftime('%b%d_%H-%M-%S') writer = SummaryWriter( log_dir=os.path.join(config.tensorboard_logdir, f'{config.log_file}_{current_time}')) return logger, writer