import logging import os from logging.handlers import RotatingFileHandler from pr.config import LOG_FILE def setup_logging(verbose=False): log_dir = os.path.dirname(LOG_FILE) if log_dir and not os.path.exists(log_dir): os.makedirs(log_dir, exist_ok=True) logger = logging.getLogger('pr') logger.setLevel(logging.DEBUG if verbose else logging.INFO) if logger.handlers: logger.handlers.clear() file_handler = RotatingFileHandler( LOG_FILE, maxBytes=10 * 1024 * 1024, backupCount=5 ) file_handler.setLevel(logging.DEBUG) file_formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) file_handler.setFormatter(file_formatter) logger.addHandler(file_handler) if verbose: console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_formatter = logging.Formatter( '%(levelname)s: %(message)s' ) console_handler.setFormatter(console_formatter) logger.addHandler(console_handler) return logger def get_logger(name=None): if name: return logging.getLogger(f'pr.{name}') return logging.getLogger('pr')