# rstat_tool/logger_setup.py import logging import sys # Get the root logger for our application. Other modules will import this. logger = logging.getLogger("rstat_app") def setup_logging(console_verbose=False): """ Configures the application's logger and captures logs from yfinance. """ logger.setLevel(logging.INFO) logger.propagate = False if logger.hasHandlers(): logger.handlers.clear() # File Handler (Always Verbose) file_handler = logging.FileHandler("rstat.log", mode='a') file_handler.setLevel(logging.INFO) 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 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) # Use the same console handler yfinance_logger.addHandler(file_handler) # Use the same file handler