import os import sys import logging def configure_logger(logger_name, log_filename, log_dir="logs"): """ Configures a logger with specified parameters. :param logger_name: Name of the logger. :param log_filename: Name of the log file. :param log_dir: Directory where logs will be stored. Defaults to "logs". :return: Configured logger. """ logging_str = "[%(asctime)s:%(levelname)s:%(module)s:%(message)s]" log_path = os.path.join(log_dir, log_filename) os.makedirs(log_dir, exist_ok=True) logger = logging.getLogger(logger_name) logger.setLevel(logging.INFO) formatter = logging.Formatter(logging_str) file_handler = logging.FileHandler(log_path) file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler(sys.stdout) stream_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(stream_handler) return logger def main_sys_logger(log_dir="logs"): """ Configures and returns the main system logger. :param log_dir: Directory where logs will be stored. Defaults to "logs". :return: Main system logger. """ return configure_logger("main_sys_logger", "gun_det.log", log_dir) def ipcam_logger(log_dir="logs"): """ Configures and returns the IP camera logger. :param log_dir: Directory where logs will be stored. Defaults to "logs". :return: IP camera logger. """ return configure_logger("ipcam_logger", "ipcam.log", log_dir) def detection_logger(log_dir="logs"): """ Configures and returns the detection logger. :param log_dir: Directory where logs will be stored. Defaults to "logs". :return: Detection logger. """ return configure_logger("detection_logger", "detection.log", log_dir)