- console_commands/logs.py — чтение последних строк лога (tail -20) - console_commands/reload.py — горячая перезагрузка всех cogs - console_commands/trigger_morning.py — ручной запуск morning-дайджеста - logs доступна через admin.py (docker exec) и интерактивный терминал - reload и trigger morning доступны через интерактивный терминал - сохранён bot._scheduler для доступа к планировщику - обновлены __init__.py, admin.py, README.md, ISSUES.md - добавлены тесты: test_console_logs.py (4), test_console_reload.py (2), test_console_trigger_morning.py (3) - итого 243 теста
29 lines
865 B
Python
29 lines
865 B
Python
"""Просмотр последних строк лога."""
|
|
|
|
from pathlib import Path
|
|
|
|
LOG_FILE = Path("logs/bot.log")
|
|
DEFAULT_LINES = 20
|
|
|
|
|
|
def logs(stop_event, bot, lines: int = DEFAULT_LINES):
|
|
"""Показать последние строки лога (tail -N)."""
|
|
if stop_event.is_set():
|
|
return None
|
|
|
|
if not LOG_FILE.exists():
|
|
print(f"Файл лога не найден: {LOG_FILE}")
|
|
return None
|
|
|
|
try:
|
|
with open(LOG_FILE, "r", encoding="utf-8") as f:
|
|
all_lines = f.readlines()
|
|
tail = all_lines[-lines:] if len(all_lines) > lines else all_lines
|
|
|
|
print(f"\nПоследние {len(tail)} строк {LOG_FILE}:")
|
|
print("-" * 40)
|
|
print("".join(tail), end="")
|
|
print("-" * 40)
|
|
except OSError as e:
|
|
print(f"Ошибка чтения лога: {e}")
|