import logging import sys from logging.handlers import RotatingFileHandler def setup_logger(): # Formatting log_format = logging.Formatter( '%(asctime)s - %(levelname)s - %(module)s - %(message)s (%(funcName)s:%(lineno)d)' ) # Base Logger logger = logging.getLogger("swiftquery") logger.setLevel(logging.DEBUG) # Set base level to debug # --- Handlers --- # 1. Console Handler (for stdout) console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(logging.INFO) # Only INFO and above for console console_handler.setFormatter(log_format) # 2. File Handler (for logging to a file) # Rotates logs, keeping 5 backups of 5MB each file_handler = RotatingFileHandler( 'app.log', maxBytes=5*1024*1024, backupCount=5 ) file_handler.setLevel(logging.DEBUG) # DEBUG and above for file file_handler.setFormatter(log_format) # Add handlers to the logger logger.addHandler(console_handler) logger.addHandler(file_handler) return logger # Instantiate the logger logger = setup_logger()