diff --git a/tests/test_logger.py b/tests/test_logger.py index 41ef05f..7cd829e 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -42,7 +42,9 @@ def test_invalid_level_defaults_to_info() -> None: def test_file_handler_when_logs_dir_exists() -> None: - """FileHandler добавляется если директория logs существует.""" + """RotatingFileHandler добавляется если директория logs существует.""" + import logging.handlers + orig_cwd = os.getcwd() with tempfile.TemporaryDirectory() as tmpdir: logs_dir = Path(tmpdir) / "logs" @@ -51,7 +53,11 @@ def test_file_handler_when_logs_dir_exists() -> None: try: with _isolated_logger() as root: - file_handlers = [h for h in root.handlers if isinstance(h, logging.FileHandler)] + file_handlers = [ + h + for h in root.handlers + if isinstance(h, logging.handlers.RotatingFileHandler) + ] assert len(file_handlers) >= 1 # Закрыть file handler чтобы освободить файл на Windows for h in file_handlers: @@ -62,6 +68,8 @@ def test_file_handler_when_logs_dir_exists() -> None: def test_logs_dir_created_automatically() -> None: """Директория logs создаётся автоматически, если её нет.""" + import logging.handlers + orig_cwd = os.getcwd() with tempfile.TemporaryDirectory() as tmpdir: os.chdir(tmpdir) @@ -72,7 +80,11 @@ def test_logs_dir_created_automatically() -> None: try: with _isolated_logger() as root: assert logs_dir.exists() - file_handlers = [h for h in root.handlers if isinstance(h, logging.FileHandler)] + file_handlers = [ + h + for h in root.handlers + if isinstance(h, logging.handlers.RotatingFileHandler) + ] assert len(file_handlers) >= 1 # Закрыть file handler чтобы освободить файл на Windows for h in file_handlers: diff --git a/utils/logger.py b/utils/logger.py index 01e3c3e..ab9d9ed 100644 --- a/utils/logger.py +++ b/utils/logger.py @@ -6,6 +6,7 @@ """ import logging +import logging.handlers import os import sys from pathlib import Path @@ -34,11 +35,14 @@ def setup_logging() -> logging.Logger: root.setLevel(level) root.addHandler(console) - # File handler — logs/bot.log + # File handler — logs/bot.log с ротацией по размеру (5 МБ, 5 бэкапов) log_dir = Path("logs") log_dir.mkdir(parents=True, exist_ok=True) - file_handler = logging.FileHandler( - log_dir / "bot.log", encoding="utf-8" + file_handler = logging.handlers.RotatingFileHandler( + log_dir / "bot.log", + maxBytes=5 * 1024 * 1024, # 5 МБ + backupCount=5, + encoding="utf-8", ) file_handler.setLevel(level) file_handler.setFormatter(formatter)