Source code for jdxi_editor.log.setup

import logging
import sys
from logging.handlers import RotatingFileHandler
from pathlib import Path

from jdxi_editor.project import __package_name__, __program__, __version__


[docs] def setup_logging(log_level: int = logging.DEBUG) -> logging.Logger: """Set up logging configuration""" try: _ = logging.getLogger(__package_name__) log_dir = Path.home() / f".{__package_name__}" / "logs" log_dir.mkdir(parents=True, exist_ok=True) log_file = log_dir / f"{__package_name__}.log" print(f"Setting up logging to: {log_file}") for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) file_handler = RotatingFileHandler( str(log_file), maxBytes=1024 * 1024, backupCount=5, encoding="utf-8", ) file_handler.setLevel(log_level) file_formatter = logging.Formatter( "%(filename)-20s| %(lineno)-5s| %(levelname)-8s| %(message)-24s" ) file_handler.setFormatter(file_formatter) console_handler = logging.StreamHandler(sys.__stdout__) console_handler.setLevel(log_level) console_formatter = logging.Formatter( "%(filename)-20s| %(lineno)-5s| %(levelname)-8s| %(message)-24s" ) console_handler.setFormatter(console_formatter) logging.root.setLevel(log_level) logging.root.addHandler(file_handler) logging.root.addHandler(console_handler) logger = logging.getLogger(__package_name__) logger.info("Logging setup complete") logger.info(f"{__program__} starting up...") logger.debug(f"Log file: {log_file}") handlers = [file_handler, console_handler] return logger except Exception as ex: print(f"Error setting up logging: {str(ex)}") raise