Neda/Back/core/logger.py

39 lines
850 B
Python

import logging
import os
from typing import Final
DEFAULT_LOG_LEVEL: Final[str] = "INFO"
DEFAULT_LOG_FORMAT: Final[str] = (
"%(asctime)s | %(levelname)s | %(name)s | %(message)s"
)
_configured = False
def _resolve_log_level() -> int:
level_name = os.getenv("LOG_LEVEL", DEFAULT_LOG_LEVEL).upper()
return getattr(logging, level_name, logging.INFO)
def setup_logging() -> None:
global _configured
if _configured:
return
root_logger = logging.getLogger()
root_logger.setLevel(_resolve_log_level())
if not root_logger.handlers:
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(DEFAULT_LOG_FORMAT))
root_logger.addHandler(handler)
_configured = True
def get_logger(name: str) -> logging.Logger:
setup_logging()
return logging.getLogger(name)