log-analyzer · v1.0.0 · 2026-10-26 · sha256 c09d7780ebc954c1

log-analyzer v1.0.0A

Immutable. This exact content never changes and is served at /api/v1/blob/c09d7780ebc954c1.

---
name: log-analyzer
description: Summarizes application log files by severity, time range and the most frequent error messages. Use when the user shares a log file or pasted log output and asks what went wrong, which errors repeat, or how noisy the log is.
license: MIT
metadata:
  version: 1.0.0
  author: Lethe044
  tags: [logs, debugging, devops, analysis]
---

# Log analyzer

Reads plain text logs and produces a structured summary so the agent can reason about the
incident instead of scrolling through thousands of lines.

## When to use

- The user pastes a stack trace or log excerpt and asks for the root cause.
- The user asks which errors happen most often, or when problems started.
- A deploy or test run failed and a log file is available.

## How to run

```bash
python scripts/analyze_log.py --top 5 app.log
cat app.log | python scripts/analyze_log.py
```

The script reads the file given as the last argument, or standard input when no file is given.

## Output

A JSON object:

- `total_lines` and `levels`: a count per severity (`CRITICAL`, `ERROR`, `WARN`, `INFO`, `DEBUG`).
- `first_timestamp` and `last_timestamp`: the earliest and latest ISO style timestamps found, or `null`.
- `top_errors`: the most frequent error messages as `{"message", "count"}`. Numbers, hex ids and quoted
  values are replaced with placeholders so that similar errors group together.

## Reading the result

1. Start with `levels`. A high ratio of `ERROR` to `INFO` points to a sustained failure, not a one-off.
2. Compare `first_timestamp` with the time the user reports the problem.
3. Take the first entry of `top_errors` and search the original log for its raw form to get the stack trace.
4. Report the cause, the evidence (counts and timestamps), and one concrete next step.

## Example

Input line: `2024-05-01 10:00:02 ERROR db timeout after 30s on host 10.0.0.5`

The message is grouped as `db timeout after <n>s on host <n>.<n>.<n>.<n>`.

## Errors

A missing file exits with code 2 and `file not found` on stderr. Empty input returns zero counts.