"""Tools for logging."""from__future__importannotationsimportlogging
[docs]definitialize_logger(level:int=logging.INFO,fmt:str="")->logging.Logger:"""Initialize the default logger. Parameters ---------- level The log level. fmt Custom logging format string. Defaults to JobflowSettings.LOG_FORMAT. Common format codes: - %(message)s - The logged message - %(asctime)s - Human-readable time - %(levelname)s - DEBUG, INFO, WARNING, ERROR, or CRITICAL See Python logging documentation for more format codes. Returns ------- Logger A logging instance with customized formatter and handlers. """importsysfromjobflowimportSETTINGSlog=logging.getLogger("jobflow")log.setLevel(level)log.handlers=[]# reset logging handlers if they already existformatter=logging.Formatter(fmtorSETTINGS.LOG_FORMAT)screen_handler=logging.StreamHandler(stream=sys.stdout)screen_handler.setFormatter(formatter)log.addHandler(screen_handler)returnlog