diff --git a/tests/test_logger.py b/tests/test_logger.py index c1f3472..41ef05f 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -60,21 +60,23 @@ def test_file_handler_when_logs_dir_exists() -> None: os.chdir(orig_cwd) -def test_no_file_handler_when_logs_dir_missing() -> None: - """FileHandler не добавляется если директории logs нет.""" +def test_logs_dir_created_automatically() -> None: + """Директория logs создаётся автоматически, если её нет.""" orig_cwd = os.getcwd() with tempfile.TemporaryDirectory() as tmpdir: os.chdir(tmpdir) # Убедиться что logs/ нет logs_dir = Path("logs") - if logs_dir.exists(): - import shutil - shutil.rmtree(logs_dir) + assert not logs_dir.exists() try: with _isolated_logger() as root: + assert logs_dir.exists() file_handlers = [h for h in root.handlers if isinstance(h, logging.FileHandler)] - assert len(file_handlers) == 0 + assert len(file_handlers) >= 1 + # Закрыть file handler чтобы освободить файл на Windows + for h in file_handlers: + h.close() finally: os.chdir(orig_cwd) diff --git a/utils/logger.py b/utils/logger.py index 764c04a..01e3c3e 100644 --- a/utils/logger.py +++ b/utils/logger.py @@ -34,15 +34,15 @@ def setup_logging() -> logging.Logger: root.setLevel(level) root.addHandler(console) - # File handler — logs/bot.log (если директория logs доступна) + # File handler — logs/bot.log log_dir = Path("logs") - if log_dir.exists(): - file_handler = logging.FileHandler( - log_dir / "bot.log", encoding="utf-8" - ) - file_handler.setLevel(level) - file_handler.setFormatter(formatter) - root.addHandler(file_handler) + log_dir.mkdir(parents=True, exist_ok=True) + file_handler = logging.FileHandler( + log_dir / "bot.log", encoding="utf-8" + ) + file_handler.setLevel(level) + file_handler.setFormatter(formatter) + root.addHandler(file_handler) # Подавить шум от aiohttp и discord.internal logging.getLogger("aiohttp").setLevel(logging.WARNING)