⚠️ Warning: Withdrawing more than your balance will use user funds!
×
Edit Settings (JSON)
Values shown as "[REDACTED]" will remain unchanged if left as-is.
×
Investigate Logs
Enter Request ID to investigate:
Withdrawal Token:
Save this token! It represents your withdrawn balance.
Temporary Balances
Loading API keys…
"""
)
@admin_router.get("/", response_class=HTMLResponse)
async def admin(request: Request) -> str:
if is_admin_authenticated(request):
return await dashboard(request)
return admin_auth()
@admin_router.get("/logs/{request_id}", response_class=HTMLResponse)
async def view_logs(request: Request, request_id: str) -> str:
if not is_admin_authenticated(request):
return admin_auth()
logger.info(f"Investigating logs for request_id: {request_id}")
# Search for log entries with this request_id
log_entries = []
logs_dir = Path("logs")
if logs_dir.exists():
# Get all log files sorted by modification time (most recent first)
log_files = sorted(
logs_dir.glob("*.log"), key=lambda x: x.stat().st_mtime, reverse=True
)
for log_file in log_files[:7]: # Check last 7 days of logs
try:
with open(log_file, "r") as f:
for line in f:
if request_id in line:
try:
# Parse JSON log entry
log_data = json.loads(line.strip())
log_entries.append(log_data)
except json.JSONDecodeError:
# If not JSON, include raw line
log_entries.append({"raw": line.strip()})
except Exception as e:
logger.error(f"Error reading log file {log_file}: {e}")
# Sort entries by timestamp if available
log_entries.sort(key=lambda x: x.get("asctime", ""), reverse=False)
# Format log entries for display
formatted_logs = []
for entry in log_entries:
if "raw" in entry:
formatted_logs.append(f'
{entry["raw"]}
')
else:
# Format JSON log entry
timestamp = entry.get("asctime", "Unknown time")
level = entry.get("levelname", "INFO")
message = entry.get("message", "")
pathname = entry.get("pathname", "")
lineno = entry.get("lineno", "")
# Extract additional fields
extra_fields = {
k: v
for k, v in entry.items()
if k
not in [
"asctime",
"levelname",
"message",
"pathname",
"lineno",
"name",
"version",
"request_id",
]
}
level_class = level.lower()
formatted_entry = f"""
{timestamp}[{level}]{pathname}:{lineno}
{message}
"""
if extra_fields:
formatted_entry += '
'
for key, value in extra_fields.items():
formatted_entry += f'
{key}: {json.dumps(value) if isinstance(value, (dict, list)) else value}
'
formatted_entry += "
"
formatted_entry += "
"
formatted_logs.append(formatted_entry)
return (
f"""
"""
+ f"""
← Back to Dashboard
Log Investigation
Request ID: {request_id}
{"".join(formatted_logs) if formatted_logs else '
No log entries found for this Request ID
'}
Found {len(log_entries)} log entries • Searched last 7 days of logs