Spaces:
Running
Running
| import logging | |
| from logging.handlers import RotatingFileHandler | |
| from rich.logging import RichHandler | |
| logger = logging.getLogger("graphgen") | |
| def set_logger( | |
| log_file: str, | |
| file_level: int = logging.DEBUG, | |
| console_level: int = logging.INFO, | |
| *, | |
| if_stream: bool = True, | |
| max_bytes: int = 50 * 1024 * 1024, # 50 MB | |
| backup_count: int = 5, | |
| force: bool = False, | |
| ): | |
| if logger.hasHandlers() and not force: | |
| return | |
| if force: | |
| logger.handlers.clear() | |
| logger.setLevel( | |
| min(file_level, console_level) | |
| ) # Set to the lowest level to capture all logs | |
| logger.propagate = False | |
| if logger.handlers: | |
| logger.handlers.clear() | |
| if if_stream: | |
| console = RichHandler( | |
| level=console_level, show_path=False, rich_tracebacks=True | |
| ) | |
| console.setFormatter(logging.Formatter("%(message)s")) | |
| logger.addHandler(console) | |
| file_handler = RotatingFileHandler( | |
| log_file, | |
| maxBytes=max_bytes, | |
| backupCount=backup_count, | |
| encoding="utf-8", | |
| ) | |
| file_handler.setLevel(file_level) | |
| file_handler.setFormatter( | |
| logging.Formatter( | |
| "[%(asctime)s] %(levelname)s [%(name)s:%(filename)s:%(lineno)d] %(message)s", | |
| datefmt="%y-%m-%d %H:%M:%S", | |
| ) | |
| ) | |
| logger.addHandler(file_handler) | |
| def parse_log(log_file: str): | |
| with open(log_file, "r", encoding="utf-8") as f: | |
| lines = f.readlines() | |
| return lines | |