import sys import os import logging from typing import Optional def create_logger(name: str, level: [str, int], stream_stderr: bool = False, stream_format: str = "%(asctime)s | %(name)s [%(levelname)s] %(message)s", file: bool = False, file_path: Optional[None] = None, file_format: str = "%(asctime)s | %(name)s [%(levelname)s] %(message)s"): logger = logging.getLogger(name) logger.setLevel(level) stream_handler = logging.StreamHandler(sys.stderr if stream_stderr else sys.stdout) stream_handler.setFormatter(logging.Formatter(stream_format)) logger.addHandler(stream_handler) if file: if not file_path: file_path = os.path.join("logs", name) os.makedirs(os.path.dirname(file_path), exist_ok=True) file_handler = logging.FileHandler(file_path) file_handler.setFormatter(logging.Formatter(file_format)) logger.addHandler(file_handler) return logger