| """Centralised logging configuration.""" |
|
|
| import logging |
| import sys |
|
|
|
|
| def get_logger(name: str, level: int = logging.INFO) -> logging.Logger: |
| """Return a consistently formatted logger. |
| |
| Args: |
| name: Logger name (typically ``__name__``). |
| level: Logging level (default INFO). |
| |
| Returns: |
| Configured :class:`logging.Logger` instance. |
| """ |
| logger = logging.getLogger(name) |
|
|
| if logger.handlers: |
| return logger |
|
|
| logger.setLevel(level) |
| handler = logging.StreamHandler(sys.stdout) |
| handler.setLevel(level) |
| formatter = logging.Formatter( |
| fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", |
| datefmt="%Y-%m-%d %H:%M:%S", |
| ) |
| handler.setFormatter(formatter) |
| logger.addHandler(handler) |
| logger.propagate = False |
| return logger |
|
|