|
| 1 | +# LOGAN User Manual |
| 2 | + |
| 3 | +## Keyboard Shortcuts |
| 4 | + |
| 5 | +### Files & Tabs |
| 6 | +| Shortcut | Action | |
| 7 | +|----------|--------| |
| 8 | +| Ctrl+O | Open file | |
| 9 | +| Ctrl+T | New tab | |
| 10 | +| Ctrl+W | Close tab | |
| 11 | +| Ctrl+Tab | Next tab | |
| 12 | +| Ctrl+Shift+Tab | Previous tab | |
| 13 | +| Drag & drop | Drop files or folders into window to open | |
| 14 | + |
| 15 | +### Navigation |
| 16 | +| Shortcut | Action | |
| 17 | +|----------|--------| |
| 18 | +| Arrow Up/Down | Move one line | |
| 19 | +| Page Up/Down | Move by page | |
| 20 | +| Home / End | Jump to first / last line | |
| 21 | +| Arrow Left/Right | Scroll horizontally | |
| 22 | +| Shift+Scroll wheel | Horizontal scroll | |
| 23 | + |
| 24 | +### Search |
| 25 | +| Shortcut | Action | |
| 26 | +|----------|--------| |
| 27 | +| Ctrl+F | Focus search box | |
| 28 | +| Enter | Run search | |
| 29 | +| F3 / Ctrl+G | Next result | |
| 30 | +| Shift+F3 / Ctrl+Shift+G | Previous result | |
| 31 | +| Ctrl+Shift+R | Toggle search results panel | |
| 32 | + |
| 33 | +### Bookmarks & Highlights |
| 34 | +| Shortcut | Action | |
| 35 | +|----------|--------| |
| 36 | +| Ctrl+B | Toggle bookmark on current line | |
| 37 | +| Ctrl+H | Highlight selected text (all occurrences) | |
| 38 | +| Ctrl+Shift+H | Highlight selected text (first per line) | |
| 39 | +| Ctrl+Shift+S | Save selected lines as snippet to notes file | |
| 40 | + |
| 41 | +### Panels |
| 42 | +| Shortcut | Action | |
| 43 | +|----------|--------| |
| 44 | +| Ctrl+1 | Folders | |
| 45 | +| Ctrl+2 | Bookmarks | |
| 46 | +| Ctrl+3 | Highlights | |
| 47 | +| Ctrl+4 | Statistics | |
| 48 | +| Ctrl+5 | History | |
| 49 | +| Ctrl+6 | Analysis (bottom) | |
| 50 | +| Ctrl+7 | Time Gaps (bottom) | |
| 51 | +| Ctrl+8 | Search Configs (bottom) | |
| 52 | +| Ctrl+9 | Video Sync (bottom) | |
| 53 | +| Ctrl+Shift+P | Live connections panel | |
| 54 | +| Ctrl+\\ | Toggle panel visibility | |
| 55 | +| Escape | Close active panel or modal | |
| 56 | + |
| 57 | +### Special |
| 58 | +| Shortcut | Action | |
| 59 | +|----------|--------| |
| 60 | +| Ctrl+\` | Terminal (drop-down from top) | |
| 61 | +| Ctrl+Shift+N | Notes drawer (slide-up from bottom) | |
| 62 | +| Ctrl+Shift+D | Diff view between two tabs | |
| 63 | +| F7 / Shift+F7 | Next / previous diff hunk | |
| 64 | +| Alt+Z | Toggle word wrap | |
| 65 | +| Ctrl+Plus / Minus / 0 | Zoom in / out / reset | |
| 66 | +| F1 | Help | |
| 67 | + |
| 68 | +> On macOS, use Cmd instead of Ctrl. |
| 69 | +
|
| 70 | +--- |
| 71 | + |
| 72 | +## Right-Click Context Menu |
| 73 | + |
| 74 | +Right-click any line in the log viewer for: |
| 75 | + |
| 76 | +- **Highlight "..."** — highlight the selected text across the file |
| 77 | +- **Include / Exclude "..."** — add selection to filter patterns |
| 78 | +- **Add Bookmark** / **Bookmark as "..."** — bookmark with optional label |
| 79 | +- **Range from here / Range to here** — select a line range for export or review |
| 80 | +- **Search from Ln N** — start searching from a specific line |
| 81 | +- **Copy Line** / **Copy Selection** |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +## Search Features |
| 86 | + |
| 87 | +Click the search options row to reveal: |
| 88 | + |
| 89 | +- **Regex** — full regular expression support |
| 90 | +- **Wildcard** — glob patterns (`*`, `?`) |
| 91 | +- **Match Case** / **Whole Word** |
| 92 | +- **Start Line** — search from a specific line number |
| 93 | +- **Column Config** — analyze CSV/TSV structure, toggle individual column visibility, search within specific columns |
| 94 | + |
| 95 | +LOGAN auto-detects if `ripgrep` (rg) is installed and uses it for 10-100x faster search. A badge in the status bar shows which engine is active. |
| 96 | + |
| 97 | +--- |
| 98 | + |
| 99 | +## Filter System |
| 100 | + |
| 101 | +The filter bar supports combining multiple criteria: |
| 102 | + |
| 103 | +- **Include patterns** — lines must match at least one (OR) |
| 104 | +- **Exclude patterns** — lines matching any are hidden |
| 105 | +- **Level filter** — show only specific log levels |
| 106 | +- **Time range** — filter by timestamp window |
| 107 | +- **Context lines** — keep N surrounding lines around matches |
| 108 | + |
| 109 | +### Advanced Filter |
| 110 | +Build complex queries with groups of rules (`contains`, `not_contains`, `regex`, `level`) joined by AND/OR operators. |
| 111 | + |
| 112 | +### Hidden Match Peek |
| 113 | +When a filter is active and search results exist in hidden lines, a peek icon appears. Click it to see those hidden matches with surrounding context. |
| 114 | + |
| 115 | +--- |
| 116 | + |
| 117 | +## Analysis & Baselines |
| 118 | + |
| 119 | +### Run Analysis (Ctrl+6) |
| 120 | +Detects crashes, errors, top failing components, and suggests filters. Click a suggestion to apply it instantly. |
| 121 | + |
| 122 | +### Baselines |
| 123 | +Save an analysis snapshot as a named baseline. Later, compare a different log against it to see: |
| 124 | +- **Level shifts** — error/warning percentages changed significantly |
| 125 | +- **New crashes** — crash keywords not present in baseline |
| 126 | +- **Component changes** — new or missing components |
| 127 | +- **Error rate spikes** — component error rate increased 2x or more |
| 128 | +- **Time pattern variance** — log density changed drastically |
| 129 | + |
| 130 | +--- |
| 131 | + |
| 132 | +## Split & Diff View |
| 133 | + |
| 134 | +- **Split view** — open two files side by side with synchronized scrolling |
| 135 | +- **Diff view** (Ctrl+Shift+D) — compare current tab against the next tab, with added/removed lines color-coded |
| 136 | +- **F7 / Shift+F7** — jump between diff hunks |
| 137 | +- **Ctrl+PageDown / PageUp** — cycle through split files |
| 138 | + |
| 139 | +--- |
| 140 | + |
| 141 | +## Live Connections (Ctrl+Shift+P) |
| 142 | + |
| 143 | +Connect to up to 4 live log sources simultaneously: |
| 144 | + |
| 145 | +### Serial |
| 146 | +Select a USB serial port and baud rate. Incoming data is captured to a temp file and displayed live. |
| 147 | + |
| 148 | +### Logcat (Android) |
| 149 | +Select an ADB device, optionally set a filter pattern. Captures `adb logcat` output. |
| 150 | + |
| 151 | +### SSH |
| 152 | +Create or load an SSH profile, specify a remote file path to tail. Supports key-based auth with passphrase prompts. Also provides SFTP browsing to download remote files. |
| 153 | + |
| 154 | +Each connection shows a card with a minimap preview, line count, duration, and stop/restart/save/remove controls. |
| 155 | + |
| 156 | +--- |
| 157 | + |
| 158 | +## Notes Drawer (Ctrl+Shift+N) |
| 159 | + |
| 160 | +A slide-up text editor for freeform notes. Auto-saves to `.logan/<filename>.notes.txt` next to the log file. |
| 161 | + |
| 162 | +Use **Ctrl+Shift+S** (or right-click > Save Snippet) to append selected lines to the notes file. |
| 163 | + |
| 164 | +--- |
| 165 | + |
| 166 | +## Terminal (Ctrl+\`) |
| 167 | + |
| 168 | +A Quake-style drop-down terminal from the top of the window. Full shell access (bash/zsh) without leaving LOGAN. Resizable by dragging the bottom edge. |
| 169 | + |
| 170 | +--- |
| 171 | + |
| 172 | +## Bookmark Sets & Highlight Groups |
| 173 | + |
| 174 | +### Bookmark Sets |
| 175 | +Save all current bookmarks as a named set. Load a set later to restore bookmarks — useful for switching between investigation contexts on the same file. |
| 176 | + |
| 177 | +### Highlight Groups |
| 178 | +Save all current highlights as a named group. Load groups to quickly apply a color scheme for a specific log format or investigation. |
| 179 | + |
| 180 | +Both are stored globally in `~/.logan/` and available across files. |
| 181 | + |
| 182 | +--- |
| 183 | + |
| 184 | +## Search Configs & Sessions |
| 185 | + |
| 186 | +Save frequently-used search patterns with colors as **search configs**. Group related configs into **sessions** and batch-run them against any file. Results show colored ranges on the minimap. |
| 187 | + |
| 188 | +--- |
| 189 | + |
| 190 | +## Video Sync (Ctrl+9) |
| 191 | + |
| 192 | +Drag a video file into the Video Sync panel. Set a sync point linking a log line number to a video timestamp. As you scroll the log, the video seeks to the corresponding time — useful for correlating screen recordings with log output. |
| 193 | + |
| 194 | +--- |
| 195 | + |
| 196 | +## Datadog Integration |
| 197 | + |
| 198 | +Fetch logs directly from Datadog into LOGAN: |
| 199 | +1. Enter your API key and App key |
| 200 | +2. Select your Datadog site (US1, US3, EU, or custom) |
| 201 | +3. Write a query and choose a time range |
| 202 | +4. Fetched logs open automatically in a new tab |
| 203 | + |
| 204 | +--- |
| 205 | + |
| 206 | +## Column Filtering |
| 207 | + |
| 208 | +For structured logs (CSV, TSV, or fixed-width): |
| 209 | +1. Click **Analyze Columns** in the search options |
| 210 | +2. LOGAN auto-detects the delimiter and column structure |
| 211 | +3. Toggle individual columns on/off |
| 212 | +4. Search and display only the columns you care about |
| 213 | + |
| 214 | +--- |
| 215 | + |
| 216 | +## Minimap |
| 217 | + |
| 218 | +The vertical bar on the right edge shows a visual overview of the entire file: |
| 219 | +- **Red** = errors, **Yellow** = warnings |
| 220 | +- **Colored marks** = highlights, search matches, bookmarks |
| 221 | +- **Click** to jump, **drag** to scroll |
| 222 | +- Live connection cards show a horizontal density minimap per connection |
| 223 | + |
| 224 | +--- |
| 225 | + |
| 226 | +## Data Storage |
| 227 | + |
| 228 | +| Location | Contents | |
| 229 | +|----------|----------| |
| 230 | +| `.logan/<file>.json` | Bookmarks, file-specific highlights, history (next to log file) | |
| 231 | +| `.logan/<file>.notes.txt` | Notes for that file | |
| 232 | +| `~/.logan/highlights.json` | Global highlights | |
| 233 | +| `~/.logan/highlight-groups.json` | Saved highlight groups | |
| 234 | +| `~/.logan/bookmark-sets.json` | Saved bookmark sets | |
| 235 | +| `~/.logan/baselines.db` | Baseline snapshots (SQLite) | |
| 236 | +| `~/.logan/redaction-rules.json` | Custom redaction rules for MCP/AI | |
| 237 | + |
| 238 | +If the directory next to the log file is read-only, LOGAN falls back to `~/.logan/` with a keyed approach. |
| 239 | + |
| 240 | +--- |
| 241 | + |
| 242 | +## MCP Server (AI Integration) |
| 243 | + |
| 244 | +LOGAN exposes an MCP server for AI agents (like Claude Code) to control it programmatically: |
| 245 | + |
| 246 | +```bash |
| 247 | +npm run mcp |
| 248 | +``` |
| 249 | + |
| 250 | +The AI can open files, search, filter, analyze, manage bookmarks/highlights, save/compare baselines, and navigate — all through natural language. The server communicates via stdio (MCP protocol) to LOGAN's HTTP API on localhost. |
| 251 | + |
| 252 | +Sensitive data (IPs, emails, tokens) is automatically redacted before being sent to the AI. Custom redaction rules can be added in `~/.logan/redaction-rules.json`. |
0 commit comments