@mytec: feat: Phase 3.0 Architecture Refactor ✅
Major refactoring of RFCP backend: - Modular propagation models (8 models) - SharedMemoryManager for terrain data - ProcessPoolExecutor parallel processing - WebSocket progress streaming - Building filtering pipeline (351k → 15k) - 82 unit tests Performance: Standard preset 38s → 5s (7.6x speedup) Known issue: Detailed preset timeout (fix in 3.1.0)
This commit is contained in:
34
backend/app/utils/logging.py
Normal file
34
backend/app/utils/logging.py
Normal file
@@ -0,0 +1,34 @@
|
||||
"""
|
||||
Structured logging for RFCP backend.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import threading
|
||||
|
||||
|
||||
_log_file = None
|
||||
|
||||
|
||||
def rfcp_log(tag: str, msg: str):
|
||||
"""Log with tag prefix, timestamp, and thread name.
|
||||
|
||||
Writes to stdout and a log file for reliability.
|
||||
"""
|
||||
global _log_file
|
||||
ts = time.strftime('%H:%M:%S')
|
||||
thr = threading.current_thread().name
|
||||
line = f"[{tag} {ts}] [{thr}] {msg}"
|
||||
print(line, flush=True)
|
||||
|
||||
try:
|
||||
if _log_file is None:
|
||||
log_dir = os.environ.get('RFCP_DATA_PATH', './data')
|
||||
os.makedirs(log_dir, exist_ok=True)
|
||||
log_path = os.path.join(log_dir, 'rfcp-backend.log')
|
||||
_log_file = open(log_path, 'a')
|
||||
_log_file.write(line + '\n')
|
||||
_log_file.flush()
|
||||
except Exception:
|
||||
pass
|
||||
Reference in New Issue
Block a user