Skip to content
cargo-log-parser logo

Cargo Log Parser

cargo-log-parser

Parse and filter cargo build logs to extract errors, warnings, and diagnostics with regex-based filtering. Use when debugging Rust projects, analyzing cargo build output, filtering errors by file path or message pattern, or helping users understand compilation failures. Triggers on cargo build er...

SKILL.md

Full skill instructions

Cargo Log Parser

Parse cargo build logs to extract and filter errors/​warnings with precise log boundaries.

Quick Start

# From file
python scripts/​cargo_log_parser.py build.log --errors

# From stdin (pipe from cargo)
cargo build 2>&1 | python scripts/​cargo_log_parser.py --errors

Key Filters

FlagPurposeExample
-e, --errorsErrors only--errors
-w, --warningsWarnings only--warnings
-f, --file PATTERNFilter by file path regex--file "tests/​.*"
-m, --message PATTERNFilter by message regex--message "cannot find"
-c, --code PATTERNFilter by error code--code "E0425"

Output Modes

FlagOutput Style
(default)Detailed LLM-friendly format with context
--streamCompact one-line-per-diagnostic
--rawOriginal log text for matches only
--jsonStructured JSON output
-v, --verboseInclude raw log text in output

Common Patterns

# Errors in test files only
python scripts/​cargo_log_parser.py build.log --errors --file "tests/​.*"

# Find "not found" errors
python scripts/​cargo_log_parser.py build.log --errors --message "cannot find|not found"

# All E04xx errors (name resolution)
python scripts/​cargo_log_parser.py build.log --code "E04\d\d"

# Group errors by file
python scripts/​cargo_log_parser.py build.log --errors --group-by-file

# Group by error code
python scripts/​cargo_log_parser.py build.log --errors --group-by-code

# Quick summary
python scripts/​cargo_log_parser.py build.log --summary

Python API

from cargo_log_parser import CargoLogParser, LogQuery, DiagnosticLevel

parser = CargoLogParser()
parsed = parser.parse_file("build.log")
query = LogQuery(parsed)

# Filter errors
errors = query.find_errors(file_pattern=r"tests/​.*", message_pattern=r"cannot find")

# Get exact log boundaries
for error in errors:
    bounds = query.get_error_boundaries(error)
    print(f"Lines {bounds['line_start']}-{bounds['line_end']}")
    print(bounds['raw_text'])

# Group and analyze
by_file = query.group_by_file(level=DiagnosticLevel.ERROR)
by_code = query.group_by_code()

Regex Reference

PatternMatches
tests/​.*Test files
src/​.*Source files
.*/​mod\.rsAny mod.rs
E03\d\dBorrow checker errors
E04\d\dName resolution errors
unused_.*Unused warnings