feat: ротация логов по размеру (RotatingFileHandler, 5 МБ, 5 бэкапов)
This commit is contained in:
parent
9c7909bde5
commit
4027b7df6c
@ -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:
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user