feat: Implement comprehensive non-hierarchical logging system
- Created new logging infrastructure with per-component filtering - Added 6 log levels: DEBUG, INFO, API, WARNING, ERROR, CRITICAL - Implemented non-hierarchical level control (any combination can be enabled) - Migrated 917 print() statements across 31 files to structured logging - Created web UI (system.html) for runtime configuration with dark theme - Added global level controls to enable/disable levels across all components - Added timestamp format control (off/time/date/datetime options) - Implemented log rotation (10MB per file, 5 backups) - Added API endpoints for dynamic log configuration - Configured HTTP request logging with filtering via api.requests component - Intercepted APScheduler logs with proper formatting - Fixed persistence paths to use /app/memory for Docker volume compatibility - Fixed checkbox display bug in web UI (enabled_levels now properly shown) - Changed System Settings button to open in same tab instead of new window Components: bot, api, api.requests, autonomous, persona, vision, llm, conversation, mood, dm, scheduled, gpu, media, server, commands, sentiment, core, apscheduler All settings persist across container restarts via JSON config.
This commit is contained in:
@@ -5,13 +5,18 @@ Replaces the vector search system with organized, complete context.
|
||||
Preserves original content files in their entirety.
|
||||
"""
|
||||
|
||||
from utils.logger import get_logger
|
||||
|
||||
logger = get_logger('core')
|
||||
|
||||
|
||||
def get_original_miku_lore() -> str:
|
||||
"""Load the complete, unmodified miku_lore.txt file"""
|
||||
try:
|
||||
with open("miku_lore.txt", "r", encoding="utf-8") as f:
|
||||
return f.read()
|
||||
except Exception as e:
|
||||
print(f"⚠️ Failed to load miku_lore.txt: {e}")
|
||||
logger.error(f"Failed to load miku_lore.txt: {e}")
|
||||
return "## MIKU LORE\n[File could not be loaded]"
|
||||
|
||||
|
||||
@@ -21,7 +26,7 @@ def get_original_miku_prompt() -> str:
|
||||
with open("miku_prompt.txt", "r", encoding="utf-8") as f:
|
||||
return f.read()
|
||||
except Exception as e:
|
||||
print(f"⚠️ Failed to load miku_prompt.txt: {e}")
|
||||
logger.error(f"Failed to load miku_prompt.txt: {e}")
|
||||
return "## MIKU PROMPT\n[File could not be loaded]"
|
||||
|
||||
|
||||
@@ -31,7 +36,7 @@ def get_original_miku_lyrics() -> str:
|
||||
with open("miku_lyrics.txt", "r", encoding="utf-8") as f:
|
||||
return f.read()
|
||||
except Exception as e:
|
||||
print(f"⚠️ Failed to load miku_lyrics.txt: {e}")
|
||||
logger.error(f"Failed to load miku_lyrics.txt: {e}")
|
||||
return "## MIKU LYRICS\n[File could not be loaded]"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user