python_examples/menu/logging_utils.py

41 lines
1.2 KiB
Python

import logging
from rich.logging import RichHandler
def setup_logging(
log_filename: str = "menu.log",
console_log_level: int = logging.DEBUG,
file_log_level: int = logging.DEBUG,
):
"""Set up logging configuration with separate console and file handlers."""
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)
if root_logger.hasHandlers():
root_logger.handlers.clear()
console_handler = RichHandler(
rich_tracebacks=True,
show_time=True,
show_level=True,
show_path=False,
markup=True,
log_time_format="[%Y-%m-%d %H:%M:%S]",
)
console_handler.setLevel(console_log_level)
file_handler = logging.FileHandler(log_filename)
file_handler.setLevel(file_log_level)
file_formatter = logging.Formatter(
"%(asctime)s [%(name)s] [%(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
file_handler.setFormatter(file_formatter)
root_logger.addHandler(console_handler)
root_logger.addHandler(file_handler)
menu_logger = logging.getLogger("menu")
menu_logger.setLevel(console_log_level)
menu_logger.propagate = True