Stop tailing log files
During development your logs end up in a file you tail -f, in container output you scroll, or in a worker's stdout you never see. Send them to Buggregator instead: logs from every service land in the same live view as your exceptions, dumps and emails — with the context readable as JSON.
- INFOappOrder 1042 placed14:23:01
- DEBUGqueueJob SendInvoice started14:23:02
- WARNINGpaymentsPayment retry14:23:04
- ERRORpaymentsCard gateway timeout after 3 attempts14:23:05
- NOTICEsecurityLogin from a new device14:23:09
Message
Card gateway timeout after 3 attempts
Context
{
"order": 1042,
"gateway": "card",
"attempts": 3,
"timeout_ms": 5000,
"customer": { "id": 77, "country": "DE" }
}Source
- file
- app/Billing/Gateway/CardGateway.php
- line
- 87
- function
- CardGateway::charge
Each record with its channel, level, message and context. Example data.
Logs you can actually read
No Elasticsearch, no log shipper, no separate logging stack — one handler in your logger config.
Context as JSON
Context and extra fields from Monolog processors are shown as formatted JSON, not one long string in a terminal.
Where it was logged
File, line and function, when your logger puts them in the record's context as source.
Search
Find records by message, channel or level — type "error" or "security".
All PSR-3 levels
All 8 PSR-3 levels, colour-coded by severity, so errors stand out.
Workers and daemons too
Queue consumers, cron jobs and daemons write logs that are easy to miss in stdout. Buggregator catches them all.
Every service, one place
Point every container at the same Buggregator and read their logs side by side — next to the exceptions and dumps from the same moment, in one feed.
Setup in 60 seconds
No registration. No account. Start it and point your app at it.
Start Buggregator
Logs arrive over TCP on port 9913. The UI is on port 8000. One file, about 40 MB, installed with one command. Prefer containers? Use the Docker tab.
$ curl -fsSL https://raw.githubusercontent.com/buggregator/server/master/scripts/install.sh | sh $ HTTP_ADDR=127.0.0.1:8000 \ SMTP_ADDR=127.0.0.1:1025 \ VAR_DUMPER_ADDR=127.0.0.1:9912 \ MONOLOG_ADDR=127.0.0.1:9913 \ PROXY_ADDR=127.0.0.1:8080 \ ~/.local/bin/buggregator
The script picks the file for your CPU: Intel/AMD or ARM.
One file for Linux, macOS and Windows, about 40 MB. Nothing else to install.
Runs on Windows, macOS and Linux, on Intel/AMD and ARM.
Prefer not to do it yourself? Your AI agent can set Buggregator up for you →
Add a socket handler to your logger
Use Monolog's SocketHandler with JsonFormatter — the JSON formatter is required. In Docker Compose, use the service name instead of 127.0.0.1 (e.g. buggregator:9913).
// config/logging.php
'channels' => [
'socket' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => \Monolog\Handler\SocketHandler::class,
'formatter' => \Monolog\Formatter\JsonFormatter::class,
'handler_with' => [
'connectionString' => env('LOG_SOCKET_URL', '127.0.0.1:9913'),
],
],
],
Point it at Buggregator
Set the address in .env and open http://127.0.0.1:8000. New records appear as they are written.
LOG_CHANNEL=socket LOG_SOCKET_URL=127.0.0.1:9913
Works with Monolog — and the frameworks built on it
Anything that logs through Monolog can send to Buggregator. One handler, no new package in your app.
Ready to try it?
One command to start. No account needed.
Also built into Buggregator