| import logging |
| import sys |
| from typing import Optional |
|
|
| def setup_logging(level: str = "INFO", logger_name: Optional[str] = None) -> logging.Logger: |
| """ |
| Set up centralized logging configuration |
| |
| Args: |
| level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| logger_name: Name for the logger, if None uses root logger |
| |
| Returns: |
| Configured logger instance |
| """ |
| |
| |
| logger = logging.getLogger(logger_name) if logger_name else logging.getLogger() |
| |
| |
| if logger.handlers: |
| return logger |
| |
| |
| logger.setLevel(getattr(logging, level.upper(), logging.INFO)) |
| |
| |
| console_handler = logging.StreamHandler(sys.stdout) |
| console_handler.setLevel(getattr(logging, level.upper(), logging.INFO)) |
| |
| |
| formatter = logging.Formatter( |
| '%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| datefmt='%Y-%m-%d %H:%M:%S' |
| ) |
| console_handler.setFormatter(formatter) |
| |
| |
| logger.addHandler(console_handler) |
| |
| return logger |
|
|
| |
| def configure_app_logging(): |
| """Configure application-wide logging""" |
| logging.basicConfig( |
| level=logging.INFO, |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', |
| datefmt='%Y-%m-%d %H:%M:%S' |
| ) |
| |
| |
| app_logger = logging.getLogger(__name__) |
| app_logger.info("Application logging configured") |
| |
| return app_logger |
|
|