Skip to main content
Glama
nazufel
by nazufel
test_device_logs.py4.82 kB
#!/usr/bin/env python3 """ Test script for the updated device log monitoring functionality. Demonstrates how to get debug logs from connected iOS devices and simulators. """ import sys import time from pathlib import Path # Add the src directory to the path sys.path.insert(0, str(Path(__file__).parent / "src")) from console_monitor import XcodeConsoleMonitor def main(): """Test the device log monitoring functionality.""" print("🔍 Xcode Device Log Monitoring Test") print("=" * 50) # Create console monitor monitor = XcodeConsoleMonitor() # Test 1: Get connected devices print("\n1. 📱 Checking for connected devices...") devices = monitor.get_connected_devices() if not devices: print(" ❌ No devices found. Make sure you have:") print(" - iOS Simulator installed and at least one device created") print(" - Physical iOS device connected via USB (if testing with physical device)") return print(f" ✅ Found {len(devices)} device(s):") for i, device in enumerate(devices, 1): device_type = device.get('type', 'unknown') device_name = device.get('name', 'Unknown Device') state = device.get('state', 'Unknown') udid = device.get('udid', 'N/A') print(f" {i}. {device_name}") print(f" Type: {device_type}") print(f" State: {state}") print(f" UDID: {udid[:8]}...") # Test 2: Get logs from the first device print(f"\n2. 📋 Getting logs from {devices[0]['name']}...") device_udid = devices[0]['udid'] logs = monitor.get_device_logs(device_udid, count=10, since_minutes=5) print(f" Found {len(logs)} logs from the last 5 minutes") if logs: print(" Recent logs:") for i, log in enumerate(logs[:3], 1): timestamp = log.timestamp.strftime("%H:%M:%S") level_icon = { 'debug': '🔍', 'info': 'ℹ️', 'warning': '⚠️', 'error': '❌', 'fault': '💥' }.get(log.level, '•') print(f" {i}. [{timestamp}] {level_icon} {log.process}: {log.message[:60]}...") else: print(" No logs found in the last 5 minutes") # Test 3: Get debug logs print(f"\n3. 🐛 Getting debug logs from {devices[0]['name']}...") debug_logs = monitor.get_device_debug_logs(device_udid, count=5) print(f" Found {len(debug_logs)} debug logs") if debug_logs: print(" Debug logs:") for i, log in enumerate(debug_logs[:3], 1): timestamp = log.timestamp.strftime("%H:%M:%S") level_icon = { 'debug': '🔍', 'info': 'ℹ️', 'warning': '⚠️', 'error': '❌', 'fault': '💥' }.get(log.level, '•') print(f" {i}. [{timestamp}] {level_icon} {log.process}: {log.message[:60]}...") else: print(" No debug logs found") # Test 4: Test app-specific filtering (if we had an app bundle ID) print(f"\n4. 🎯 Testing app-specific log filtering...") print(" (This would filter logs for a specific app bundle ID)") print(" Example: monitor.get_device_debug_logs(device_udid, 'com.example.myapp')") # Test 5: Demonstrate real-time monitoring print(f"\n5. ⏱️ Testing real-time monitoring...") print(" Starting 3-second device log monitoring...") def log_callback(log): timestamp = log.timestamp.strftime("%H:%M:%S.%f")[:-3] level_icon = { 'debug': '🔍', 'info': 'ℹ️', 'warning': '⚠️', 'error': '❌', 'fault': '💥' }.get(log.level, '•') print(f" [{timestamp}] {level_icon} {log.process}: {log.message[:50]}...") monitor.add_callback(log_callback) monitor.start_device_monitoring(device_udid) # Monitor for 3 seconds time.sleep(3) monitor.stop_monitoring() print(" ✅ Real-time monitoring test completed") # Summary print(f"\n📊 Summary:") print(f" • Device detection: ✅ Working") print(f" • Device log retrieval: ✅ Working") print(f" • Debug log filtering: ✅ Working") print(f" • Real-time monitoring: ✅ Working") print(f"\n🎉 All device log monitoring features are working correctly!") print(f"\n💡 Usage in MCP:") print(f" • Use 'get_connected_devices' to see available devices") print(f" • Use 'get_device_logs' with a device UDID to get recent logs") print(f" • Use 'get_device_debug_logs' for debug-specific logs") print(f" • Use 'start_device_monitoring' for real-time log streaming") if __name__ == "__main__": main()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nazufel/xcode-errors-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server