[docs]defformat(self,record:logging.LogRecord)->str:"""Set the correct format style for each record."""ifrecord.levelno==HIGHLIGHT_LVL:self._style._fmt=self.formats["highlight"]else:self._style._fmt=self.formats["standard"]returnlogging.Formatter.format(self,record)
[docs]defset_up_logger(verbose:bool,log_file:Optional[Path]=None)->None:"""Set up the log environment."""config:Dict[str,Any]={"version":1,"disable_existing_loggers":True,"formatters":{"verbose":{"style":"{","format":"{asctime} [{levelname:^9}] {name}: {message}",},"consoleFormatter":{"class":"e3_build_tools.logging.ConsoleFormatter"},},"handlers":{"console":{"level":"INFO","formatter":"consoleFormatter","class":"logging.StreamHandler","stream":"ext://sys.stdout",},},"loggers":{"e3_build_tools":{"handlers":["console"],"level":"DEBUG","propagate":True,},},}ifverbose:config["handlers"]["console"].update({"formatter":"verbose","level":"DEBUG"})iflog_file:config["handlers"]["file"]={"level":"DEBUG","formatter":"verbose","class":"logging.FileHandler","filename":log_file,}config["loggers"]["e3_build_tools"]["handlers"].append("file")logging.config.dictConfig(config)
[docs]defpretty_log(key:str,val:str)->None:"""Log formated string using the standard logger."""logger.info(f"{key:<25} = {val}")