import logging def makeLogger(name: str): # create logger formats for file and terminal file_formatter = logging.Formatter( "[ %(levelname)s ] ~ %(asctime)s ~ %(module)s.%(funcName)s: %(message)s" ) console_formatter = logging.Formatter( "[ %(levelname)s ] in %(module)s.%(funcName)s: %(message)s" ) # create logging file if loglevel is debug file_handler = logging.FileHandler(f"gridtools_log.log", mode="w") file_handler.setLevel(logging.WARN) file_handler.setFormatter(file_formatter) # create stream handler for terminal output console_handler = logging.StreamHandler() console_handler.setFormatter(console_formatter) console_handler.setLevel(logging.INFO) # create script specific logger logger = logging.getLogger(name) logger.addHandler(file_handler) logger.addHandler(console_handler) logger.setLevel(logging.INFO) return logger if __name__ == "__main__": # initiate logger mylogger = makeLogger(__name__) # test logger levels mylogger.debug("This is for debugging!") mylogger.info("This is an info.") mylogger.warning("This is a warning.") mylogger.error("This is an error.") mylogger.critical("This is a critical error!")