File size: 910 Bytes
0390c27 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | """
Shared logging utilities.
All scripts should obtain a logger via get_logger() rather than
configuring logging directly.
"""
from __future__ import annotations
import logging
import sys
def get_logger(name: str, level: int = logging.INFO) -> logging.Logger:
"""
Return a named logger with a consistent format.
Args:
name: Logger name, typically __name__ of the calling module.
level: Logging level (default INFO).
Returns:
Configured Logger instance.
"""
logger = logging.getLogger(name)
if not logger.handlers:
handler = logging.StreamHandler(sys.stdout)
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.setLevel(level)
return logger
|