import logging import sys import os from logging.handlers import RotatingFileHandler def setup_logging(): # Ensure the logs directory exists log_directory = 'logs' if not os.path.exists(log_directory): os.makedirs(log_directory) # Create handlers file_handler = RotatingFileHandler(os.path.join(log_directory, 'iottb.log'), maxBytes=1048576, backupCount=5) console_handler = logging.StreamHandler(sys.stdout) # Create formatters and add it to handlers file_fmt = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') console_fmt = logging.Formatter( '%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d - %(funcName)s - %(message)s') file_handler.setFormatter(file_fmt) console_handler.setFormatter(console_fmt) # Get the root logger and add handlers root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) root_logger.addHandler(file_handler) root_logger.addHandler(console_handler) # Prevent propagation to the root logger to avoid duplicate logs root_logger.propagate = False setup_logging()