Better Logger is a powerful macOS application for viewing, organizing, and analyzing iOS device logs. With unique lane-based categorization, MCP (Model Context Protocol) integration for AI assistants, and a beautiful grid view, it transforms how developers debug iOS applications.The modern iOS log viewer with AI integration and lane-based organization
- Real-Time Log Streaming - Stream logs from iOS simulators with live updates
- Lane-Based Organization - Automatically categorize logs into color-coded lanes for easy navigation
- Lanes Grid View - Visual side-by-side comparison of logs organized by lanes with resizable columns
- Custom Format Parsing - Configure regex patterns to parse any log format with built-in presets
- MCP Integration - Full Model Context Protocol support for AI assistants like Cursor
- Session Management - Save, load, and export log sessions for later analysis
- Advanced Search & Filtering - Search by text, filter by level, lane, process, or subsystem
- Source Location Extraction - Automatically parse file, line number, and method from logs
- Device Management - Support for iOS Simulators
- First iOS Logger with MCP Support - Integrate with AI assistants for intelligent log analysis
- Visual Grid View - See all log lanes side-by-side in a beautiful grid layout
- One-Time Purchase - $9.99 lifetime license, no subscriptions
- Memory Optimized - Smart memory management for handling large log streams
- Native macOS App - Built with SwiftUI for a native, responsive experience
Screenshots coming soon
- macOS 13.0 (Ventura) or later
- Xcode (for iOS Simulator support)
- Download the latest release from Releases
- Open the
.dmgfile - Drag Better Logger to Applications
- Launch Better Logger
-
Select a Device
- Choose an iOS Simulator or physical device from the sidebar
- Booted simulators appear at the top
-
Select an App
- Click the app picker button or enter a Bundle ID manually
- Choose "All Apps" to stream all logs
-
Start Streaming
- Click the "Start" button to begin streaming logs
- Logs will appear in real-time with automatic lane discovery
-
Organize with Lanes
- Lanes are automatically discovered from formatted logs
- Toggle lanes on/off to focus on specific categories
- Use the Lanes Grid View (βG) for side-by-side comparison
Better Logger automatically discovers lanes from logs formatted like:
[CATEGORY](level) [File.swift:42 method()] Your log message
Example:
[NETWORK](info) [APIService.swift:150 fetchUsers()] GET /api/users - 200 OK
[UI](debug) [LoginView.swift:25 viewDidLoad()] Login screen appeared
[AUTH](warning) [AuthManager.swift:80 validateToken()] Token expiring soon
βS- Save current sessionβG- Open Lanes Grid Viewβ§βH- Open Saved Sessionsβ§βM- Toggle MCP Serverβ,- Open Settings
- Open Format Settings (gear icon)
- Choose a preset or create custom patterns
- Configure Lane Pattern (regex) to extract category and level
- Configure Source Pattern (regex) to extract file, line, and method
- Test your patterns with sample log messages
Better Logger includes a full MCP (Model Context Protocol) server, enabling integration with AI assistants like Cursor.
- Start the MCP Server in Better Logger (View β Start MCP Server)
- Click the MCP status indicator in the toolbar
- Click "Install Bridge" - this installs the bridge to
~/.better-logger/mcp-bridge - Copy the generated Cursor config
- Add it to
~/.cursor/mcp.json - Restart Cursor
list_devices- List available iOS simulators and physical deviceslist_sessions- List saved log sessionslist_lanes- List discovered log lanesget_logs- Get current live logs (with filters: lane, level, search, limit)get_session_logs- Get logs from a saved sessionstart_log_stream- Start streaming logs from a devicestop_log_stream- Stop the current log stream
You: "Show me all network errors from the current log stream"
Cursor: [Uses get_logs tool with level=error and lane=NETWORK]
[GENERAL](debug) [AppDelegate.swift:20 applicationDidFinishLaunching()] App launched
If your logs use a different format, configure custom patterns:
Input: [2025-01-15 10:30:45] [ERROR] [AuthService] Login failed
Lane Pattern: \[(\w+)\] (captures "AuthService")
Source Pattern: (optional, if you include file:line in logs)
- Check if port 8765 is already in use
- Ensure firewall allows local connections
- Check MCP debug logs in the status popover
- Verify the simulator is selected
- Check that the app is running on the device
- Try "All Apps" instead of a specific bundle ID
- Ensure logs are using a supported format
- Built with SwiftUI
- MCP protocol implementation based on Model Context Protocol specification
Made with β€οΈ for iOS developers
