import logging from logging.handlers import RotatingFileHandler from pathlib import Path class MyAppFilter(logging.Filter): def filter(self, record): return record.name == "my_app" def configure_global_logging( log_file="logs/app.log", level=logging.INFO, max_bytes=5_000_000, backup_count=3 ): log_file_path = Path(log_file) log_file_path.parent.mkdir(parents=True, exist_ok=True) logger = logging.getLogger("my_app") logger.setLevel(level) if not logger.hasHandlers(): file_handler = RotatingFileHandler( log_file, maxBytes=max_bytes, backupCount=backup_count ) file_handler.setLevel(level) file_handler.setFormatter(logging.Formatter("%(asctime)s [%(filename)s:%(lineno)d] - %(message)s")) file_handler.addFilter(MyAppFilter()) console_handler = logging.StreamHandler() console_handler.setLevel(level) console_handler.setFormatter(logging.Formatter("%(asctime)s [%(filename)s:%(lineno)d] - %(message)s")) console_handler.addFilter(MyAppFilter()) logger.addHandler(file_handler) logger.addHandler(console_handler) # Отключаем все другие логгеры logging.getLogger().setLevel(logging.CRITICAL) return logger