Skip to content
Projects

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.

How these counts are measured

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

LogViewer

A fast, visual log analysis tool and live Logcat streamer for Android developers.

Release CI Coverage Status Java License: MIT


Documentation • Download • Features • Quick Start • Shortcuts



LogViewer Main Interface

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 .zip bugreport 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 Logs to 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

LogViewer Live Logcat Streaming

Real-time streaming from connected Android devices with live filtering, buffer selection, and single-click device terminals

Bug Report Analysis

LogViewer Bug Report Inspection

Inspect Android application packages, system properties, carrier configurations, and services


⌨ 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 ./gradlew included)
  • 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/test directory 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:

  1. Run the version increment helper script:
    ./scripts/inc-ver-workflow.sh <new-version>
    # Example: ./scripts/inc-ver-workflow.sh 2.8
    
    This validates the new version number, updates app.properties, creates the commit and tag, and pushes them to GitHub.
  2. On GitHub, navigate to the Actions tab ➔ Release Deploy.
  3. 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