Perch

Log file analysis

Upload a log file you downloaded from a server and Perch shows you what went wrong: errors grouped by message, failing and slow endpoints, status codes and a timeline — searchable by text, time, level, status or endpoint.

Nothing to install and nothing stored. Try it without an account (files up to 20 MB), or use Log analysis with a free account (up to 300 MB). The analysis is one-time: it is cleared when you leave or refresh the page.

Analyze a log in 3 steps

  1. Step 1 of 3
    Get the log file from your server
    For example scp server:/var/log/nginx/access.log . — or zip a folder: zip -r logs.zip /var/log/app. Rotated .gz files work as they are.
  2. Step 2 of 3
    Upload it
    Drop the file on Analyze a log (or Log analysis when signed in). A few hundred thousand lines take a few seconds.
  3. Step 3 of 3
    Find the problem
    Start from the timeline and the repeated errors, then narrow down: click a bar to zoom into that time, an endpoint or an error to filter by it, and search the lines.

Supported files

FileDetails
.log, .txt (any text file)One log line per line. Lines longer than 8 KB are cut.
.gzA single compressed log, e.g. access.log.2.gz from logrotate.
.zipEvery text file inside is read, including .gz files; images and other binary files are skipped.
LimitsUp to 300 MB per upload with an account (3 GB unpacked); 20 MB without an account (200 MB unpacked). A bigger archive gets a warning before upload; you can still analyse its first part, marked as partial.
Not supported.rar, .7z and .tar — re-pack them as .zip.

What Perch understands

FormatWhat it picks out
nginx / Apache access logsTime, client IP, method, path, status code, and the response time when it is logged at the end of the line.
JSON logs (one object per line)Time (time, timestamp, @timestamp, ts or epoch), level, message, status, method, URL, duration, client IP — also pino / bunyan numeric levels.
SyslogTime (the year is inferred), host and program, level words.
Application logsAny line with a timestamp and a level word (ERROR, WARN…), plus status=, duration= and GET /path when present. Stack traces stay with the error above them.

Times without a timezone are read as UTC, and every time on the analysis page is shown in UTC so it matches the file. Endpoints are grouped with ids replaced by :id (/api/orders/123 → /api/orders/:id), and error lines that differ only in numbers, ids or IP addresses are grouped as one repeated error.

Search and filters

FilterExample
Textpayment timeout — every word must appear (not case-sensitive).
LevelWARN and above, ERROR and above…
Status5xx, 4xx, or click a status code such as 502.
Endpoint and pathClick an endpoint in “Top endpoints”, or type part of a path.
TimeClick a bar in the timeline, or set From / To (UTC).
Error, client, fileClick a repeated error, a client IP or a file name.

Privacy

Log analysis is one-time and nothing is stored: only the page you uploaded from can see the analysis, and the file and its analysis are deleted as soon as you leave or refresh that page (or press “Analyze another file”). If a browser closes unexpectedly, they are deleted automatically within an hour. Remove secrets such as passwords or tokens from a log before uploading it.

Server agent (live logs) →All integrations →