Normalises via TOML profiles
Each file is parsed by an extensible TOML profile that maps its native timestamp, severity, message, and source fields into one common entry model.
Read the signal, skip the noise.
Recursively discovers logs, auto-detects each vendor format via extensible TOML profiles, and merges them into one colour-coded chronological timeline with severity, regex, and time-window filtering plus live tail and time correlation.
INFO 12:04:07 nginx GET /api/health 200 8msWARN 12:04:08 app retry 2/3 upstream timeoutERROR 12:04:08 worker job 9c2 failed: disk fullINFO 12:04:08 systemd logsleuth --follow ./logsEach file is parsed by an extensible TOML profile that maps its native timestamp, severity, message, and source fields into one common entry model.
Entries from every file are sorted into a single chronological timeline on a background scan thread, so opening hundreds of logs never freezes the interface.
A background poll reads only the bytes written after tail starts and streams them into the timeline, watching just the source files you have selected.
When something breaks across more than one system, the story is usually spread across four log files in four formats that disagree about what time it is. LogSleuth loads them all, detects each format, and stitches the entries into one chronological timeline you can filter and search. Click an error in one log and the others light up around the same moment, so you can follow the cascade instead of alt-tabbing between tabs.
Download the latest release from:
https://github.com/Swatto86/LogSleuth/releases
Run the executable and open a file or directory.
Profiles tell LogSleuth how to parse timestamps, severity, message text, and optional source fields. Built-in profiles cover common formats. Custom profiles are TOML files, so you can adapt LogSleuth to application-specific logs.
When multiple files are loaded, entries are normalized and sorted by timestamp. This makes it easier to correlate a front-end error, API error, service restart, and database warning in one view.
Live tail follows files as new lines are written. Use it while reproducing a problem or watching a service restart.
Directory watch tracks new or changed log files in a folder. It is useful for applications that rotate logs or create one file per process/session.
Bookmarks mark entries you want to return to during an investigation. Use them for root-cause candidates, first error, last healthy event, or handover notes.
Useful filtering patterns:
Export filtered results to CSV for spreadsheet review or JSON for structured analysis. Export the narrowed result set rather than every loaded entry.
Use custom TOML profiles when LogSleuth does not recognize your log format. A profile defines how to parse fields such as timestamp, level, and message.
The README also documents a profile-generation workflow from a log directory. Use that as a starting point, then review the generated profile against real samples.
git clone https://github.com/Swatto86/LogSleuth.git
cd logsleuth
cargo build --release
cargo run
Run with debug logging:
RUST_LOG=debug cargo run
Check whether the file matches a built-in profile. If not, create or adjust a TOML profile for that format.
Confirm that all files use comparable time zones or timestamp formats. Mixed local time and UTC can make correlation misleading.
Make sure the file is still being appended to and that the app has read permission. For rotated logs, use directory watch as well as live tail.
https://github.com/Swatto86/LogSleuthhttps://github.com/Swatto86/LogSleuth/releases