import logging import sys # Custom Formatter class SageFormatter(logging.Formatter): """Custom formatter to prefix logs with [MODULE] [LEVEL].""" def format(self, record): log_fmt = "[%(name)s] [%(levelname)s] %(message)s" formatter = logging.Formatter(log_fmt) return formatter.format(record) class SageStreamHandler(logging.StreamHandler): def emit(self, record): super().emit(record) self.flush() def get_sage_logger(name: str): """Factory for Sage loggers.""" logger = logging.getLogger(name) if not logger.handlers: logger.setLevel(logging.DEBUG) handler = SageStreamHandler(sys.stdout) handler.setFormatter(SageFormatter()) logger.addHandler(handler) logger.propagate = False return logger # Global instance for basic app logging log = get_sage_logger("app")