chatbot / logs /logger.py
anris05's picture
bot
8a2dcce
Raw
History Blame Contribute Delete
1.21 kB
"""
Centralized logging setup.
Every module does `from logs.logger import get_logger` and
`logger = get_logger(__name__)` rather than configuring logging itself.
Writes to both console and logs/app.log (paths from config.py).
"""
import logging
import os
import sys
import config
_CONFIGURED = False
def _configure_root():
global _CONFIGURED
if _CONFIGURED:
return
os.makedirs(config.LOG_DIR, exist_ok=True)
root = logging.getLogger("dsa_chatbot")
root.setLevel(config.LOG_LEVEL)
root.propagate = False
formatter = logging.Formatter(
"%(asctime)s | %(levelname)-8s | %(name)s | %(message)s"
)
if not root.handlers:
stream_handler = logging.StreamHandler(sys.stdout)
stream_handler.setFormatter(formatter)
root.addHandler(stream_handler)
file_handler = logging.FileHandler(config.LOG_FILE_PATH, encoding="utf-8")
file_handler.setFormatter(formatter)
root.addHandler(file_handler)
_CONFIGURED = True
def get_logger(name: str) -> logging.Logger:
"""Returns a named logger nested under the shared 'dsa_chatbot' root."""
_configure_root()
return logging.getLogger(f"dsa_chatbot.{name}")