# rstat_tool/logger_setup.py import logging import sys logger = logging.getLogger("rstat_app") def setup_logging(console_verbose=False, debug_mode=False): """ Configures the application's logger with a new DEBUG level. """ # The logger itself must be set to the lowest possible level (DEBUG). log_level = logging.DEBUG if debug_mode else logging.INFO logger.setLevel(log_level) logger.propagate = False if logger.hasHandlers(): logger.handlers.clear() # File Handler (Always verbose at INFO level or higher) file_handler = logging.FileHandler("rstat.log", mode='a') file_handler.setLevel(logging.INFO) # We don't need debug spam in the file usually file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') file_handler.setFormatter(file_formatter) logger.addHandler(file_handler) # Console Handler (Verbosity is controlled) console_handler = logging.StreamHandler(sys.stdout) console_formatter = logging.Formatter('%(message)s') console_handler.setFormatter(console_formatter) if debug_mode: console_handler.setLevel(logging.DEBUG) elif console_verbose: console_handler.setLevel(logging.INFO) else: console_handler.setLevel(logging.CRITICAL) logger.addHandler(console_handler) # YFINANCE LOGGER CAPTURE yfinance_logger = logging.getLogger("yfinance") yfinance_logger.propagate = False if yfinance_logger.hasHandlers(): yfinance_logger.handlers.clear() yfinance_logger.setLevel(logging.WARNING) yfinance_logger.addHandler(console_handler) yfinance_logger.addHandler(file_handler)