B22: прикладное логирование vector.* + администрирование в доках (по образцу РВС)
- backend/logging_setup.py: setup_logging() (stdout INFO + файл /tmp/vector/vector.log,
ротация 5×2 МБ, VectorLOGLEVEL/VectorLOGFILE/VectorLOGDIR), get_logger('vector.*')
- события: vector.analyze (матрасчёт с длительностью), vector.auth (login_ok/failed/
lockout), vector.audit (каждая запись), vector.contour (ok/failed/rejected),
vector.operations (operation_complete), vector.geocode (успех/timeout/ошибка)
- существующие логгеры переведены в namespace vector.* (geo, geo.osm, rules, water, admin)
- README §13а: таблица наблюдаемых событий + правила (без ПДн/секретов)
- SETUP_GUIDE: §15 RPO/RTO + backup≠restore, §16 grep по vector.*, §17 диагностика
по цепочкам (БД, 500, fallback-зоны, вход), §17а чек-лист передачи проекта
- DEPLOY.md: вместо устаревшего дубля — ссылка на актуальные доки + шпаргалка стенда
- тесты: 239 passed
This commit is contained in:
@@ -12,8 +12,11 @@ from typing import Optional
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from backend.logging_setup import get_logger
|
||||
from backend.models import AuditChange, AuditEvent, SecuritySetting, User
|
||||
|
||||
log = get_logger('audit')
|
||||
|
||||
|
||||
def _client_meta(request) -> tuple[str | None, str | None]:
|
||||
if request is None:
|
||||
@@ -54,6 +57,9 @@ def audit_log(
|
||||
new_value=None if new is None else str(new),
|
||||
))
|
||||
db.commit()
|
||||
log.info('audit %s user=%s obj=%s/%s ip=%s', event_type,
|
||||
event.username or '—', object_type or '—', event.object_id or '—',
|
||||
event.ip_address or '—')
|
||||
|
||||
|
||||
def audit_retention_days(db: Session) -> int:
|
||||
|
||||
Reference in New Issue
Block a user