Spaces:
Sleeping
Sleeping
| 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") | |