tibagni/LogViewer
tibagni/LogViewer has 44 GitHub stars and 22 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 20:53 UTC. Last push 2026-11-06.
A LogViewer tool to help analyze Android logs
What you can do
- Multi-File Log Merging - Open and chronologically merge multiple .log, .txt, and .zip bugreport files at once.
- Live ADB Streamer - Direct integration with adb logcat: manage connected devices, select stream buffers (main, system, events, crash, radio, kernel), restart server, and launch root device shells.
- Color-Coded Filtering - Assign individual colors to regex and keyword filters to instantly distinguish which subsystem generated each log line.
- Filter Groups & Sharing - Organize filters into named groups/tabs, save filter sets to reusable .filter files, and share them across your team.
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
LogViewer
A fast, visual log analysis tool and live Logcat streamer for Android developers.
Documentation • Download • Features • Quick Start • Shortcuts
Why LogViewer?
Analyzing raw Android logs, multi-file bugreports, or live logcat bursts can quickly become overwhelming in standard text editors or IDE windows. LogViewer was built to solve this:
- 🎨 Multi-Color Filter Canvas: Create regex and keyword filters, assign distinct colors to different components (for example: Bluetooth in blue, Audio in orange, Crash in red), and view matches side by side in real time without losing the surrounding log context.
- 📱 Integrated Live Logcat Streaming: Connect your device over USB or Wi-Fi, select log stream buffers (
main,system,events,crash,radio,kernel), and stream live with auto-reconnection and single-click device terminals. - ⚡ Optimized for Heavy Bugreports: Open and chronologically merge multi-file logs and 100MB+ bugreports instantly with parallel indexing and memory streaming.
- 🤖 Android Bugreport Intelligence: Inspect device properties (
getprop), installed packages, hidden system services, carrier configs, and subscriptions with dedicated UI inspectors. - 🌗 Modern Look and Feel: Clean Light and Dark themes, customizable typography, and full keyboard navigation.
🚀 Quick Start
1. Download & Run (No build required)
LogViewer is multiplatform (macOS, Linux, Windows) and packaged as a standalone executable JAR:
👉 Download the Latest Release (LogViewer-all.jar)
Run it with a double-click or from your terminal (requires Java 8 or newer):
java -jar LogViewer-*-all.jar
2. Open Logs or Bugreports
- Drag & Drop: Drop
.txt,.log, or.zipbugreport files directly into the window. - CLI Arguments: Pass log paths directly when launching:
java -jar LogViewer-*-all.jar bugreport.txt main.log radio.log - File Menu: Select
Logs > Open Logsto pick multiple log files at once.
3. Stream Live Device Logs
Switch to the Live Logs tab, select your connected Android device, choose your desired buffers (main, system, events, radio, etc.), and click Start Streaming.
✨ Features
| Feature | Description |
|---|---|
| Multi-File Log Merging | Open and chronologically merge multiple .log, .txt, and .zip bugreport files at once. |
| Live ADB Streamer | Direct integration with adb logcat: manage connected devices, select stream buffers (main, system, events, crash, radio, kernel), restart server, and launch root device shells. |
| Color-Coded Filtering | Assign individual colors to regex and keyword filters to instantly distinguish which subsystem generated each log line. |
| Filter Groups & Sharing | Organize filters into named groups/tabs, save filter sets to reusable .filter files, and share them across your team. |
| Dual-Pane Synchronized Views | The Filtered Logs pane displays matched lines while the All Logs pane preserves chronological timeline context. Double-click any line to navigate between views. |
| "My Logs" Bookmarking | Pin and curate critical log entries into a dedicated "My Logs" pane to assemble an incident investigation timeline. |
| Quick Context Actions | Right-click any log line to "Filter by PID", inspect detailed multi-line text (Cmd+I / Ctrl+I), or bookmark directly into "My Logs". |
| Elapsed Time Measurement | Select any two log lines and right-click to instantly inspect the elapsed duration or copy a formatted incident snippet (both log lines with time delta) for bug reports and tickets. |
| Global Filter Search | Search across all open filter groups using the global find dialog (Cmd+Shift+F / Ctrl+Shift+F). |
| Advanced In-Table Search | In-table search with real-time debounce, match count tracking, highlight tracking, and reverse search (Shift+Enter / Shift+F3). |
| Log Stream Badges | Visual badges ([main], [system], [events], [radio], [kernel]) clearly differentiate sources in mixed live streams. |
| Time Limiting | Narrow down investigations by setting timestamp boundaries to ignore noisy logs before or after an incident. |
| Bugreport Intelligence | Dedicated inspectors for device properties (getprop), installed application packages, hidden system packages, carrier configs, and subscriptions. |
| High-Performance Architecture | Parallel timestamp sorting, memory-efficient streaming, fast indexing, and zero-drop live buffer handling 80k+ lines effortlessly. |
| Modern Themes & Typography | Clean Light and Dark themes, customizable monospaced fonts, font size scaling, and bold rendering. |
| Customizable Keymap | View, search, and rebind keyboard shortcuts in Settings > Keymap (or Help > Keyboard Shortcuts...) with conflict detection and one-click reset to defaults. |
| Multi-Language Support | Native support for English and Brazilian Portuguese (pt-BR). |
📸 Showcase
Live Logcat Streaming & Device Management
Real-time streaming from connected Android devices with live filtering, buffer selection, and single-click device terminals
Bug Report Analysis
⌨ Keyboard Shortcuts
| Category | Shortcut (macOS / Linux & Windows) | Action |
|---|---|---|
| File | Cmd+, / Ctrl+, |
Open Settings |
| Logs | Cmd+O / Ctrl+O |
Open log files |
| Logs | Cmd+R / F5 |
Refresh opened logs |
| Logs | Cmd+W / Ctrl+W |
Close currently opened logs |
| Logs | Cmd+G / Ctrl+G |
Go to timestamp |
| Logs | Cmd+I / Ctrl+I |
Inspect selected log line in detail |
| Logs | Delete |
Remove selected line from My Logs |
| Filters | Cmd+Shift+O / Ctrl+Shift+O |
Open filter files |
| Filters | Cmd+Shift+F / Ctrl+Shift+F |
Search across all filters |
| Filters | / |
Quick inline search in filter list |
| Filters | , (<) |
Previous filter match in logs |
| Filters | . (>) |
Next filter match in logs |
| Filters | Space |
Toggle selected filter(s) on/off |
| Filters | Enter |
Edit selected filter |
| Filters | Delete |
Delete selected filter(s) |
| Search | Cmd+F / Ctrl+F |
Find in active log table |
| Search | F3 / Enter |
Next search match |
| Search | Shift+F3 / Shift+Enter |
Previous search match |
| Navigation | Cmd+1 / Ctrl+1 |
Switch to Main Logs tab |
| Navigation | Cmd+2 / Ctrl+2 |
Switch to Bug Report tab |
| Navigation | Cmd+3 / Ctrl+3 |
Switch to Live Logs tab |
🛠️ Tech Stack & Requirements
- Language: Kotlin & Java
- UI Framework: Swing (FlatLaf)
- Build System: Gradle (wrapper
./gradlewincluded) - Java: JDK 8 or later (tested on Java 8, 11, 17, and 21)
- ADB (Optional): Android Platform Tools for live logcat streaming and terminal shell
💻 Developer & Contributor Guide
1. Building from Source
Clone the repository and build the project using Gradle:
# Clone the repository
git clone https://github.com/tibagni/LogViewer.git
cd LogViewer
# Build the project
./gradlew build
2. Running Unit Tests
You can run the full test suite from your terminal or directly inside IntelliJ IDEA:
- Command line:
./gradlew test - IntelliJ IDEA: Right-click the
src/testdirectory in the Project view and select Run 'All Tests'.
3. Packaging Executable JAR
To create a standalone fat JAR containing all dependencies:
./gradlew shadowJar
The output executable JAR will be located at build/libs/LogViewer-{version}-all.jar. You can run it directly:
java -jar build/libs/LogViewer-*-all.jar
4. Updating App Version
To increase the application version, update app.properties:
- The configuration file is located at
src/main/resources/properties/app.properties. A symbolic link (app.properties) is also available in the repository root for convenience. - You can edit this file manually, or use the version increment script described below.
5. Creating a Pull Request
The repository includes a helper script (./scripts/pr-workflow.sh) to automate branch creation, pushing, and PR management (requires GitHub CLI):
# Create a new branch, push, open PR, and stay on branch to continue iterating:
./scripts/pr-workflow.sh <feature-branch-name>
# If already on a feature branch (or to be prompted when on master):
./scripts/pr-workflow.sh
# Quick mode: create PR, immediately switch back to master, and delete local branch:
./scripts/pr-workflow.sh --quick <branch-name>
# Open PR and watch CI / AI review checks live in terminal:
./scripts/pr-workflow.sh -w
By default, the script pushes your commits, opens a PR targeting master (using your commit messages for the title and description), and keeps you on the branch so you can iterate on code review feedback. If a PR is already open for that branch, running the script pushes your latest updates to the existing PR.
6. Deploying a New Release
Deployments are handled via the Release Deploy GitHub Action:
- Run the version increment helper script:
This validates the new version number, updates./scripts/inc-ver-workflow.sh <new-version> # Example: ./scripts/inc-ver-workflow.sh 2.8app.properties, creates the commit and tag, and pushes them to GitHub. - On GitHub, navigate to the Actions tab ➔ Release Deploy.
- Click Run workflow, enter the tag name (e.g.
2.8), and submit. The workflow will automatically build the standalone fat JAR, generate release notes, and publish the GitHub Release with the binary attached.
7. Generating Documentation Screenshots
To regenerate all screenshots used in README.md and the User Guide (gh-pages) after UI changes:
# Generate into docs/images/ (default):
./gradlew generateScreenshots
# Or specify a custom output directory:
./gradlew generateScreenshots -PoutputDir=/path/to/output
The task renders the live Swing UI off-screen using your currently configured theme, accent color, and log font settings.
8. Updating the Keyboard Shortcuts Table
The Keyboard Shortcuts table in README.md is generated directly from ShortcutAction definitions. After adding or modifying any shortcut in ShortcutAction.kt, regenerate the table with:
# Update the shortcuts table in README.md:
./gradlew updateReadmeShortcuts
# Validate that README.md is in sync with ShortcutAction (also runs in CI):
./gradlew checkReadmeShortcuts
📄 License
LogViewer is open source software released under the MIT License.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,622 starspublic-apis/public-apis
A collective list of free APIs
497,963 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
450,165 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,303 stars