Files
site/WESP_REL/app/services/network_activity_log.py
T
2026-07-17 12:57:18 +03:00

85 lines
2.2 KiB
Python

"""Журнал событий сети/mDNS в админке (тот же JSONL, component=network)."""
from __future__ import annotations
import logging
from typing import Any, Dict, Optional
from app.services.admin_peripheral_monitor import append_peripheral_event
_LOG = logging.getLogger(__name__)
def log_network_event(
app,
*,
code: str,
message: str,
level: str = "info",
details: Optional[Dict[str, Any]] = None,
force: bool = False,
) -> None:
append_peripheral_event(
app,
component="network",
code=code,
level=level,
message=message,
details=details,
force=force,
)
_LOG.info("network/%s: %s", code, message)
def log_network_settings_saved(app, *, updates: dict, user_login: str) -> None:
parts = []
if "local_hostname" in updates:
parts.append(f"hostname={updates['local_hostname']}")
if "public_base_url" in updates:
parts.append(f"url={updates['public_base_url'] or '(auto)'}")
if "mdns_enabled" in updates:
parts.append(f"mdns={'on' if updates['mdns_enabled'] else 'off'}")
log_network_event(
app,
code="network_settings_saved",
level="ok",
message=f"Настройки сети сохранены ({', '.join(parts) or '—'})",
details={"user": user_login, **updates},
force=True,
)
def log_mdns_started(app, *, hostname: str, lan_ip: str, port: int) -> None:
log_network_event(
app,
code="mdns_started",
level="ok",
message=f"mDNS: {hostname}{lan_ip}:{port}",
details={"hostname": hostname, "lan_ip": lan_ip, "port": port},
force=True,
)
def log_mdns_stopped(app, *, reason: str = "") -> None:
msg = "mDNS остановлен"
if reason:
msg = f"{msg}: {reason}"
log_network_event(
app,
code="mdns_stopped",
level="info",
message=msg,
details={"reason": reason} if reason else None,
force=True,
)
def log_mdns_error(app, *, message: str) -> None:
log_network_event(
app,
code="mdns_error",
level="err",
message=message,
force=False,
)