fix: автоматическое создание директории logs при запуске бота

This commit is contained in:
deadzilla 2026-06-12 21:11:23 +05:00
parent 29f2836cea
commit 9c7909bde5
2 changed files with 16 additions and 14 deletions

View File

@ -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)

View File

@ -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)