import logging import sys from xmlrpc.client import boolean ############################################################################################################################## #Function to create a simple logger that logs messages to a file and optionally prints them to the console. #If logger_name = "", then the root logger will be used. If you want to create a custom logger, provide a name for it. ############################################################################################################################## def simple_logger(log_relative_path = str, printToConsole = boolean, logger_name = ""): logger = logging.getLogger(logger_name) logger.setLevel(logging.INFO) formatter = logging.Formatter(fmt="%(asctime)s [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S") file_handler = logging.FileHandler(log_relative_path, encoding="utf-8") file_handler.setFormatter(formatter) file_handler.setLevel(logging.INFO) logger.addHandler(file_handler) if printToConsole: # 2. Force StreamHandler to use sys.stdout with utf-8 encoding sys.stdout.reconfigure(encoding='utf-8') console_handler = logging.StreamHandler(sys.stdout) console_handler.setFormatter(formatter) console_handler.setLevel(logging.INFO) logger.addHandler(console_handler) return logger