2.7 KiB
2.7 KiB
Logging System Analysis & Plan
System Architecture Overview
Browser (JavaScript)
↕ Socket.io
Python Backend (Flask + Socket.io)
↕ Telnet
7D2D Game Server
Current Logging State
Python Backend
- Format: Inconsistent mix of:
print(f"[PREFIX] message")print("{}: message".format(module))- Plain
print("message")
- No:
- Timestamps
- Log levels (ERROR, WARN, INFO, DEBUG)
- User context
- Correlation IDs
- Structured data
JavaScript Frontend
- Issues:
- Ding/Dong logs every 10 seconds (spam)
- Many debug messages that don't help troubleshooting
- No structured logging
- Success messages mixed with errors
Event Flow Analysis
1. User Action Flow
User clicks checkbox (Browser)
→ Widget event sent via Socket.io
→ Python: webserver receives event
→ Python: Action handler (e.g., dom_management/select)
→ Python: DOM upsert
→ Python: Callback triggers
→ Python: Widget handler updates
→ Socket.io sends update back
→ Browser: DOM updated
Critical Logging Points:
- Action received (user, action, data)
- Action validation failed
- DOM operation (path, method, user)
- Callback trigger (which handler, why)
- Socket send (to whom, what type)
2. Tile Request Flow
Browser requests tile (HTTP GET)
→ Python: webserver /map_tiles route
→ Python: Auth check
→ Python: Proxy to game server
→ 7D2D: Returns tile OR error
→ Python: Forward response OR error
→ Browser: Displays tile OR 404
Critical Logging Points:
- Tile request (only on ERROR)
- Auth failure
- Game server error (status code, url)
- Network timeout
3. Telnet Command Flow
Python: Action needs game data
→ Python: Telnet send command
→ 7D2D: Processes command
→ 7D2D: Returns response
→ Python: Parse response
→ Python: Update DOM
→ Python: Trigger callbacks
Log Format
Python Backend Format
[LEVEL] [TIMESTAMP] event_name | context_key=value context_key=value
Example:
[ERROR] [2025-01-19 12:34:56.123] tile_fetch_failed | user=steamid123 z=4 x=-2 y=1 status=404 url=http://...
[WARN ] [2025-01-19 12:34:57.456] auth_missing_sid | user=steamid456 action=tile_request
[INFO ] [2025-01-19 12:00:00.000] module_loaded | module=webserver version=1.0
JavaScript Frontend Format
[PREFIX] event_name | context
Example:
[SOCKET ERROR] event_processing_failed | data_type=widget_content error=Cannot read property 'id' of undefined
[MAP ERROR ] shape_creation_failed | location_id=map_owner_loc1 shape=circle error=Invalid radius