Skip to main content
Logs

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.

Get started Monolog SocketHandler · port 9913
127.0.0.1:8000

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.

1

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.

This run line keeps it on this computer. Without the *_ADDR settings it listens on all network interfaces →

Rather not run a script? Download the file yourself →

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 →

2

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'),
        ],
    ],
],
3

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.

Laravel— a socket channel in config/logging.php
Symfony— a socket handler in config/packages/dev/monolog.php
Spiral— a handler in your LoggingBootloader
Any PHP— monolog/monolog with SocketHandler
Docker— buggregator:9913 from any container

Ready to try it?

One command to start. No account needed.

Also built into Buggregator