Buggregator is a beautiful, lightweight web server built on Laravel and VueJs that helps debugging your app.

Overview

A server for debugging more than just Laravel applications.

Support me on Patreon Downloads Twitter Join to our telegram

Buggregator is a beautiful, lightweight web server built on Laravel and VueJs that helps debugging your app. It runs without installation on multiple platforms via docker and supports symfony var-dumper, monolog, sentry, smtp and spatie ray package.

Contents

  1. Features
  2. Installation
  3. Configuration
  4. Contributing
  5. License

Buggregator

Features

1. Symfony VarDumper server

The dump() and dd() functions output its contents in the same browser window or console terminal as your own application. Sometimes mixing the real output with the debug output can be confusing. That’s why this Buggregator can be used to collect all the dumped data. Buggregator can display dump output in the browser as well as in a terminal (console output).

Example

VAR_DUMPER_FORMAT=server
VAR_DUMPER_SERVER=127.0.0.1:9912

2. Fake SMTP server for catching mail

Buggregator also is an email testing tool that makes it super easy to install and configure a local email server (Like MailHog). Buggregator sets up a fake SMTP server and you can configure your preferred web applications to use Buggregator’s SMTP server to send and receive emails. For instance, you can configure a local WordPress site to use Buggregator for email deliveries.

Example

MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025

3. Compatible with Sentry

Buggregator can be used to receive Sentry reports from your application. Buggregator is a lightweight alternative for local development. Just configure Sentry DSN to send data to Buggregator. It can display dump output in the browser as well as in a terminal (console output).

Simple example SENTRY_LARAVEL_DSN=http://[email protected]:23517/1.

4. Compatible with Monolog

Buggregator can receive logs from monolog/monolog package via \Monolog\Handler\SlackWebhookHandler or \Monolog\Handler\SocketHandler handler. Buggregator can display dump output in the browser as well as in a terminal (console output).

Example

LOG_CHANNEL=slack
LOG_SLACK_WEBHOOK_URL=http://127.0.0.1:23517/slack

5. Spatie Ray debug tool

Buggregator is compatible with spatie/ray package. The Ray debug tool supports PHP, Ruby, JavaScript, TypeScript, NodeJS, Go and Bash applications. After installing one of the libraries, you can use the ray function to quickly dump stuff. Any variable(s) that you pass will be sent to the Buggregator. Buggregator can display dump output in the browser as well as in a terminal (console output).

Supported features: Simple data, Colors, Sizes, Labels, New screen, Clear all, Caller, Trace, Pause, Counter, Class name of an object, Measure, Json, Xml, Carbon, File, Table, Image, Html, Text, Notifications, Phpinfo, Exception, Show queries, Count queries, Show events, Show jobs, Show cache, Model, Show views, Markdown, Collections, Env, Response, Request, Ban, Charles, Remove, Hide/Show events, Application log, Show Http client requests, Mailable

Read more about spatie/ray package.

Example

RAY_HOST=127.0.0.1  # Ray server host
RAY_PORT=23517      # Ray server port

It is a free alternative of The Ray app for those who want to run a server without GUI, cannot afford the paid version or just like open source.

But it doesn’t mean you shouldn’t support spatie’s packages!

UI

Buggregator has a responsive design and a mobile device can be used as an additional screen for viewing event history. Also you can user a termial to collect dump output if you don't want to use a browser.

Buggregator devices

Code samples

Code samples of configured Laravel application ready to send data to Buggregator you can find here.

Articles


Technological stack

Installation

Docker image

You can run Buggregator via docker from Docker Hub or using the provided Dockerfile

Just run on bash command

docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:latest
# --pull always - optional option checks latest version on every running. You can omit it

# or specific version
docker run -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:v1.18

# You can omit unused ports if you use, for example, only var-dumper
docker run --pull always -p 9912:9912 butschster/buggregator:latest

You can omit unused ports

If you don't want to see dump output in your terminal, you can disable it through ENV variables:

CLI_SMTP_STREAM=false
CLI_VAR_DUMPER_STREAM=false
CLI_SENTRY_STREAM=false
CLI_RAY_STREAM=false
CLI_MONOLOG_STREAM=false

Example

docker run --pull always --env CLI_SMTP_STREAM=false --env CLI_SENTRY_STREAM=false -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:latest

Docker compose

// docker-compose.yml
version: "2"
services:
    debugger:
        image: butschster/buggregator:latest
        environment:
            DB_CONNECTION: pgsql
            DB_HOST: db
            DB_DATABASE: homestead
            DB_USERNAME: homestead
            DB_PASSWORD: secret
        ports:
        - 23517:8000
        - 1025:1025
        - 9912:9912
        - 9913:9913

Configuration

  1. Configure your .env for VarDumper
VAR_DUMPER_FORMAT=server
VAR_DUMPER_SERVER=127.0.0.1:9912
  1. Configure your .env for mail
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
  1. Configure your .env for Sentry package
SENTRY_LARAVEL_DSN=http://[email protected]:23517/1
  1. Configure your .env for Ray package
RAY_HOST=127.0.0.1  # Debugger host
RAY_PORT=23517      # Debugger port
  1. Configure your .env for monolog logs

Socket

Add a new channel to config file 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'),
        ],
    ],
]

the set default channel to socket

LOG_CHANNEL=socket
LOG_SOCKET_URL=127.0.0.1:9913

Slack

LOG_CHANNEL=slack
LOG_SLACK_WEBHOOK_URL=http://127.0.0.1:23517/slack

That's it. Now you open http://127.0.0.1:23517 url in your browser or terminal and collect dump output from your application.

Enjoy!


Contributing

There are several projects in this repo with unresolved issues and it would be great if you help a community solving them.

Server requirements

  1. PHP 8.0
  2. Swoole 4.7
  3. NodeJS

Installation

  1. Clone repository
  2. Run composer `composer install
  3. Run npm npm i
  4. Run HTTP server php artisan server:start --host=127.0.0.1 --port=23517
  5. Run SMTP server php artisan smtp:start --host=127.0.0.1 --port=1025
  6. Run var-dumper server php artisan dump-server:start --host=127.0.0.1 --port=9912
  7. Run monolog server php artisan monolog:start --host=127.0.0.1 --port=9913
  8. Build npm npm run prod

License

Buggregator is open-sourced software licensed under the MIT license.

Comments
  • No events receiving

    No events receiving

    Any ideas? I powered up the docker containers as you specified I installed vardumper and ray in my laravel application in the controller I do dd('hello'); ray('hiya'); But when I navigate to http://localhost:23517/ It keeps spinning "Hurry! Give me something. I can't wait to show it." So I guess no events are coming in

    Any ideas

    opened by robov 12
  • Add projects for events

    Add projects for events

    Default project is assigned to events by default. For sentry events project id is taken from projectId param in sentry.event.store route. Events can by filtered by setting projectId in events.type route.

    improvement module:events module:sentry feature module:projects 
    opened by js361014 9
  • how to start without docker?

    how to start without docker?

    i have this error when opening the page

    Warning: Unknown: Failed to open stream: No such file or directory in Unknown on line 0

    Fatal error: Failed opening required '/Volumes/MacData/work/buggregator/server.php' (include_path='.:/usr/local/Cellar/php/8.0.12/share/php/pear') in Unknown on line 0

    help wanted 
    opened by anditsung 6
  • Get the UI which is shown on the homepage

    Get the UI which is shown on the homepage

    When I pull the latest version of buggregator from docker hub I get the app version which is shown in the images in the Readme but when I saw the version on the website I fell in love with that UI. I did not find a way in the readme to be able to get that version I might miss something but is there a way to get this fancy looking version?

    Screenshot 2022-03-22 at 22 15 02

    By the way; I love working with buggregator it really makes me more productive if there is a way I can fund you some coffee please let me know!

    opened by dstollie 4
  • Issues with SQL Database locked

    Issues with SQL Database locked

    I've been playing with Buggregator recently via Docker, but keep hitting this error:

    [2022-03-10 14:24:02] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"exception":"[object] (Cycle\\Database\\Exception\\StatementException(code: 0): SQLSTATE[HY000]: General error: 5 database is locked at /app/vendor/cycle/database/src/Driver/SQLite/SQLiteDriver.php:39)

    I'm primarily using the v2.0.0-beta Docker image on an M1 Mac, both from DockerHub (using Rosetta to run the x86 image on ARM), and building it locally (ARM on ARM).

    After starting the server and sending a larger amount of data, I get the following:

    ➜  MoodleRay git:(main) ✗ docker logs ray
    SQLite database file [/app/database/database.sqlite] is created.
    Migrate 0_default_create_events
    Migrate 0_default_create_users
    Migrate 0_default_create_stored_events
    Authentication is disabled.
    [INFO] RoadRunner server started; version: 2.6.3, buildtime: 2021-12-03T11:37:00+0000
    [2022-03-10 14:26:25] production.ERROR: Cycle\Database\Driver\Driver::getPDO(): Return value must be of type PDO, null returned {"exception":"[object] (Cycle\\Database\\Exception\\StatementException(code: 0): Cycle\\Database\\Driver\\Driver::getPDO(): Return value must be of type PDO, null returned at /app/vendor/cycle/database/src/Driver/SQLite/SQLiteDriver.php:39)
    [stacktrace]
    #0 /app/vendor/cycle/database/src/Driver/Driver.php(322): Cycle\\Database\\Driver\\SQLite\\SQLiteDriver->mapException(Object(TypeError), 'BEGIN TRANSACTI...')
    #1 /app/vendor/cycle/orm/src/Transaction/Runner.php(159): Cycle\\Database\\Driver\\Driver->beginTransaction()
    #2 /app/vendor/cycle/orm/src/Transaction/Runner.php(58): Cycle\\ORM\\Transaction\\Runner->prepareTransaction(Object(Infrastructure\\CycleOrm\\Database\\Drivers\\SQLiteDriver))
    #3 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(152): Cycle\\ORM\\Transaction\\Runner->run(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #4 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(372): Cycle\\ORM\\Transaction\\UnitOfWork->runCommand(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #5 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(424): Cycle\\ORM\\Transaction\\UnitOfWork->resolveSelfWithEmbedded(Object(Cycle\\ORM\\Transaction\\Tuple), Object(Cycle\\ORM\\RelationMap), false)
    #6 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(233): Cycle\\ORM\\Transaction\\UnitOfWork->resolveRelations(Object(Cycle\\ORM\\Transaction\\Tuple))
    #7 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(99): Cycle\\ORM\\Transaction\\UnitOfWork->walkPool()
    #8 /app/vendor/cycle/orm/src/EntityManager.php(47): Cycle\\ORM\\Transaction\\UnitOfWork->run()
    #9 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(36): Cycle\\ORM\\EntityManager->run()
    #10 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(47): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->handle(Object(Modules\\Events\\Application\\Commands\\StoreEvent\\Command))
    #11 /app/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->__invoke(Object(App\\Commands\\HandleReceivedEvent))
    #12 /app/vendor/symfony/messenger/MessageBus.php(77): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle(Object(Symfony\\Component\\Messenger\\Envelope), Object(Symfony\\Component\\Messenger\\Middleware\\StackMiddleware))
    #13 /app/app/Infrastructure/Bus/Command/MessengerCommandBus.php(31): Symfony\\Component\\Messenger\\MessageBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #14 /app/app/Modules/Ray/Interfaces/Http/Controllers/StoreEventAction.php(41): Infrastructure\\Bus\\Command\\MessengerCommandBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #15 /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction->__invoke(Object(Illuminate\\Http\\Request), Object(Infrastructure\\Bus\\Command\\MessengerCommandBus), Object(Illuminate\\Cache\\Repository), Object(Modules\\Ray\\EventHandler), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
    #16 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
    #17 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction), '__invoke')
    #18 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
    #19 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
    #20 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
    #21 /app/vendor/inertiajs/inertia-laravel/src/Middleware.php(82): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #23 /app/app/Interfaces/Http/Middleware/ShareInertiaData.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #24 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #25 /app/app/Interfaces/Http/Middleware/SubstituteUuids.php(34): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #26 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\SubstituteUuids->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #27 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #28 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #29 /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #30 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #31 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #32 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #33 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #34 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
    #35 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #36 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #37 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #38 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #39 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #41 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #42 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
    #43 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
    #44 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
    #45 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
    #46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
    #47 /app/vendor/spiral/roadrunner-laravel/src/Dumper/Middleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #48 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Spiral\\RoadRunnerLaravel\\Dumper\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #49 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #50 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #51 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #54 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #56 /app/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #58 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #60 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #61 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #62 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
    #63 /app/vendor/spiral/roadrunner-laravel/src/Worker.php(113): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
    #64 /app/vendor/spiral/roadrunner-laravel/src/Console/Commands/StartCommand.php(112): Spiral\\RoadRunnerLaravel\\Worker->start(Object(Spiral\\RoadRunnerLaravel\\WorkerOptions))
    #65 /app/vendor/symfony/console/Command/Command.php(298): Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #66 /app/vendor/symfony/console/Application.php(1005): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #67 /app/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #68 /app/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #69 /app/bin/rr-worker(74): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #70 {main}
    
    [previous exception] [object] (TypeError(code: 0): Cycle\\Database\\Driver\\Driver::getPDO(): Return value must be of type PDO, null returned at /app/vendor/cycle/database/src/Driver/Driver.php:662)
    [stacktrace]
    #0 /app/vendor/cycle/database/src/Driver/Driver.php(320): Cycle\\Database\\Driver\\Driver->getPDO()
    #1 /app/vendor/cycle/orm/src/Transaction/Runner.php(159): Cycle\\Database\\Driver\\Driver->beginTransaction()
    #2 /app/vendor/cycle/orm/src/Transaction/Runner.php(58): Cycle\\ORM\\Transaction\\Runner->prepareTransaction(Object(Infrastructure\\CycleOrm\\Database\\Drivers\\SQLiteDriver))
    #3 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(152): Cycle\\ORM\\Transaction\\Runner->run(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #4 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(372): Cycle\\ORM\\Transaction\\UnitOfWork->runCommand(Object(Cycle\\ORM\\Command\\Database\\Insert))
    #5 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(424): Cycle\\ORM\\Transaction\\UnitOfWork->resolveSelfWithEmbedded(Object(Cycle\\ORM\\Transaction\\Tuple), Object(Cycle\\ORM\\RelationMap), false)
    #6 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(233): Cycle\\ORM\\Transaction\\UnitOfWork->resolveRelations(Object(Cycle\\ORM\\Transaction\\Tuple))
    #7 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(99): Cycle\\ORM\\Transaction\\UnitOfWork->walkPool()
    #8 /app/vendor/cycle/orm/src/EntityManager.php(47): Cycle\\ORM\\Transaction\\UnitOfWork->run()
    #9 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(36): Cycle\\ORM\\EntityManager->run()
    #10 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(47): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->handle(Object(Modules\\Events\\Application\\Commands\\StoreEvent\\Command))
    #11 /app/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->__invoke(Object(App\\Commands\\HandleReceivedEvent))
    #12 /app/vendor/symfony/messenger/MessageBus.php(77): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle(Object(Symfony\\Component\\Messenger\\Envelope), Object(Symfony\\Component\\Messenger\\Middleware\\StackMiddleware))
    #13 /app/app/Infrastructure/Bus/Command/MessengerCommandBus.php(31): Symfony\\Component\\Messenger\\MessageBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #14 /app/app/Modules/Ray/Interfaces/Http/Controllers/StoreEventAction.php(41): Infrastructure\\Bus\\Command\\MessengerCommandBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
    #15 /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction->__invoke(Object(Illuminate\\Http\\Request), Object(Infrastructure\\Bus\\Command\\MessengerCommandBus), Object(Illuminate\\Cache\\Repository), Object(Modules\\Ray\\EventHandler), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
    #16 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
    #17 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction), '__invoke')
    #18 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
    #19 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
    #20 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
    #21 /app/vendor/inertiajs/inertia-laravel/src/Middleware.php(82): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #23 /app/app/Interfaces/Http/Middleware/ShareInertiaData.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #24 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #25 /app/app/Interfaces/Http/Middleware/SubstituteUuids.php(34): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #26 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\SubstituteUuids->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #27 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #28 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #29 /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #30 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #31 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #32 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #33 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #34 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
    #35 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #36 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #37 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #38 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #39 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #41 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #42 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
    #43 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
    #44 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
    #45 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
    #46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
    #47 /app/vendor/spiral/roadrunner-laravel/src/Dumper/Middleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #48 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Spiral\\RoadRunnerLaravel\\Dumper\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #49 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #50 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #51 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #54 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #56 /app/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #58 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
    #60 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
    #61 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
    #62 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
    #63 /app/vendor/spiral/roadrunner-laravel/src/Worker.php(113): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
    #64 /app/vendor/spiral/roadrunner-laravel/src/Console/Commands/StartCommand.php(112): Spiral\\RoadRunnerLaravel\\Worker->start(Object(Spiral\\RoadRunnerLaravel\\WorkerOptions))
    #65 /app/vendor/symfony/console/Command/Command.php(298): Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #66 /app/vendor/symfony/console/Application.php(1005): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #67 /app/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #68 /app/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #69 /app/bin/rr-worker(74): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
    #70 {main}
    "}
    +---------+------------------------------------------------------+
    |  date   |  Thu, 10 Mar 2022 14:26:28 +0000                     |
    |  source |  setup.php on line 441                               |
    |  file   |  /Users/nicols/Sites/moodles/sm/moodle/lib/setup.php |
    +---------+------------------------------------------------------+
     RAY  Log
    
      1▕ array:4 [
      2▕   "identifer" => "asdf"
      3▕   "component" => "core"
      4▕   "a" => null
      5▕   "lang" => "en"
      6▕ ]
    
    
    bug help wanted question 
    opened by andrewnicols 4
  • Using vue-ray, or js-ray etc - In browser Ray is being blocked by CORS policy

    Using vue-ray, or js-ray etc - In browser Ray is being blocked by CORS policy

    CORS allowed headers are missing.

    Still didn't dive into source code. Is this something you would accept a PR?

    Or you see this is missing, and easy fix on your end?

    image

    opened by ijpatricio 4
  • Error on long data dump

    Error on long data dump

    v2.0.0-beta1

    [previous exception] [object] (PDOException(code: 22001): SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'payload' at row 1 at /app/vendor/cycle/database/src/Driver/Driver.php:443)
    

    I think it possible to use blob cell for very long data.

    bug improvement 
    opened by roxblnfk 2
  • mail server seems to cache emails and is not refreshing

    mail server seems to cache emails and is not refreshing

    hi, I have found some strange behavior.

    I am using buggregator as a smtp server, but it keeps showing the same email message over and over.

    not sure if it caches it somehow or is not refreshing or something...

    cheers, dan

    bug 
    opened by danielzzz 2
  • is it possible to password protect the dashboard

    is it possible to password protect the dashboard

    hi,

    is it possible to somehow password protect the dashboard?

    this would be useful for tracking live servers. I know I could tunnel it to my local installation, but with more developers it get's a bit complicated.

    thanks, cheers, dan

    enhancement 
    opened by danielzzz 2
  • Use termwind to format console output

    Use termwind to format console output

    Termwind allows you to build unique and beautiful PHP command-line applications, using the Tailwind CSS API. In short, it's like Tailwind CSS, but for the PHP command-line applications.

    See https://github.com/nunomaduro/termwind

    enhancement 
    opened by butschster 1
  • GUI improvements

    GUI improvements

    • Get rid of left sidebar in list of events
    • Add better support for dark theme
    • Turn off "Projects" and "Transactions" sections in menu

    fixed #104

    enhancement usability 
    opened by butschster 0
  • Labels for screens

    Labels for screens

    Hi

    Is it possible to have the screen label in the selector itself, instead just the blue circle? If many screens are opened it is hard to know which one is which.

    Also, is it possible not to automatically change the active screen when a message is received. If I am currently reviewing a message and new one is received in another screen, I am automatically moved to the new screen. Instead of automatically change the active screen, maybe just highlight the screen button on the screen selector on the top.

    Thanks galiganu

    help wanted discussion usability 
    opened by galiganu 0
  • Clear screen button clears all the screens, not only the current one

    Clear screen button clears all the screens, not only the current one

    Hi

    The Clear Screen button from the top-right corner it clears all the screens info. I was expecting that this button will clear the info from the current screen and leave all other screens untouched. This is useful when you debug 2 environments and each environment has its screen.

    Thanks galiganu

    bug 
    opened by galiganu 0
  • Unraid Community App

    Unraid Community App

    Lots of businesses / dev teams run unraid for files which have community apps, which allow Dockers to be pulled in

    Would be super if this was on that marketplace (its all free btw)

    help wanted 
    opened by matthiscock 1
Releases(v2.0.0-rc.2)
  • v2.0.0-rc.2(Dec 15, 2022)

    What's Changed

    • Update README.md - remove unexisting sub-title from navigarion tree by @roxblnfk in https://github.com/buggregator/app/pull/118
    • Added basic functionality to show HTTP request info, should close #70 by @chorry in https://github.com/buggregator/app/pull/119

    New Contributors

    • @roxblnfk made their first contribution in https://github.com/buggregator/app/pull/118

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-rc.1...v2.0.0-rc.2

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-rc.1(Dec 7, 2022)

    What's Changed

    • Fixes the problem with var-dumper with long running applications by @butschster in https://github.com/buggregator/app/pull/116

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta6...v2.0.0-beta7

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta6(Dec 7, 2022)

    What's Changed

    • Show mapping of variables which were available within specific sentry frame by @chorry in https://github.com/buggregator/app/pull/115

    New Contributors

    • @chorry made their first contribution in https://github.com/buggregator/app/pull/115

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta5...v2.0.0-beta6

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta5(Nov 23, 2022)

    What's Changed

    • Fixes delimiter for var dumper logs. by @butschster in https://github.com/buggregator/app/pull/112

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta4...v2.0.0-beta5

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta4(Nov 21, 2022)

    What's Changed

    • Fixes problem with receiving logs from monolog in Long running applications by @butschster in https://github.com/buggregator/app/pull/107
    • Updates column type for payload field by @butschster in https://github.com/buggregator/app/pull/108
    • GUI improvements by @butschster in https://github.com/buggregator/app/pull/110
    docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:v2.0.0-beta4
    

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta3...v2.0.0-beta4

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta3(Oct 28, 2022)

    What's Changed

    • Add projects for events by @js361014 in https://github.com/buggregator/app/pull/92
    • Add event_payload_check trigger migration by @js361014 in https://github.com/buggregator/app/pull/89
    • Added json link for every event by @AnastasiaArt in https://github.com/buggregator/app/pull/99
    • Added performance module by @js361014 in https://github.com/buggregator/app/pull/100
    docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:v2.0.0-beta3
    

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta2...v2.0.0-beta3

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta2(Jul 30, 2022)

    What's Changed

    • Add tag 'beta' for docker builds with for pre releases by @butschster in https://github.com/buggregator/app/pull/95

    Not you may use latest beta release with with tag beta

    docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:beta
    

    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta1...v2.0.0-beta2

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta1(Jul 30, 2022)

    There is no more problems with database locking. Since this moment buggregator uses mysql out of the box, but if you want you may use an external database.

    To try the release use command below:

    docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:v2.0.0-beta1
    

    Thank you for using buggregator!


    What's Changed

    • Adds CORS headers to RoadRunner server by @HazyAlex in https://github.com/buggregator/app/pull/73
    • Show all event's exceptions by @js361014 in https://github.com/buggregator/app/pull/82
    • Show event's user data by @js361014 in https://github.com/buggregator/app/pull/85
    • Showing custom tags by @js361014 in https://github.com/buggregator/app/pull/84
    • Show event's contexts by @js361014 in https://github.com/buggregator/app/pull/86
    • Show event transaction name by @js361014 in https://github.com/buggregator/app/pull/81
    • Added icon of unread event for navigation link by @AnastasiaArt in https://github.com/buggregator/app/pull/88
    • Server upgrade by @butschster in https://github.com/buggregator/app/pull/91

    New Contributors

    • @HazyAlex made their first contribution in https://github.com/buggregator/app/pull/73
    • @js361014 made their first contribution in https://github.com/buggregator/app/pull/80

    Thank you guys for your contribution!


    Full Changelog: https://github.com/buggregator/app/compare/v2.0.0-beta...v2.0.0-beta1

    Source code(tar.gz)
    Source code(zip)
  • v1.19.0(Feb 22, 2022)

    What's Changed

    • Adds CORS headers to Swoole server by @HazyAlex in https://github.com/buggregator/app/pull/74

    Full Changelog: https://github.com/buggregator/app/compare/v1.18.3...v1.19.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0-beta(Dec 17, 2021)

    docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:v2.0.0-beta
    

    What's Changed

    • Fixed typo in README.md by @kastahov in https://github.com/buggregator/app/pull/12
    • added node in docker-compose.yml by @AnastasiaArt in https://github.com/buggregator/app/pull/19
    • Feature/change icons by @AnastasiaArt in https://github.com/buggregator/app/pull/23
    • Fix/28 by @butschster in https://github.com/buggregator/app/pull/30
    • [feature] Console output in a GUI by @kastahov in https://github.com/buggregator/app/pull/31
    • Fixed problem with dissapearing emails from list by @butschster in https://github.com/buggregator/app/pull/32
    • Replaces Swoole with Roadrunner by @butschster in https://github.com/buggregator/app/pull/35
    • Adds ability to download roadrunner binary via CLI by @butschster in https://github.com/buggregator/app/pull/37
    • Added Sentry events in a separate section by @butschster in https://github.com/buggregator/app/pull/40
    • Replaces Eloquent with CycleORM v2.x by @butschster in https://github.com/buggregator/app/pull/44
    • Replaces Spiral container with laravel ProxyContainer by @butschster in https://github.com/buggregator/app/pull/53
    • Adds inspector support with timeline chart by @AnastasiaArt in https://github.com/buggregator/app/pull/50
    • Adds ability to enable password protection for dashboard by @butschster in https://github.com/buggregator/app/pull/58
    • fixed bug of terminal by @AnastasiaArt in https://github.com/buggregator/app/pull/64
    • Starts working on dark theme by @butschster in https://github.com/buggregator/app/pull/49

    New Contributors

    • @kastahov made their first contribution in https://github.com/buggregator/app/pull/12
    • @AnastasiaArt made their first contribution in https://github.com/buggregator/app/pull/19

    Full Changelog: https://github.com/buggregator/app/compare/v1.18.1...v2.0.0-beta

    Source code(tar.gz)
    Source code(zip)
  • v1.18.3(Nov 30, 2021)

  • v1.18(Sep 6, 2021)

    You can add a new channel to config file 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'),
            ],
        ],
    ]
    

    the set default channel to socket

    LOG_CHANNEL=socket
    LOG_SOCKET_URL=127.0.0.1:9913
    

    Logs

    Source code(tar.gz)
    Source code(zip)
  • v1.17(Sep 5, 2021)

    1. Fixed problem with ray measure units

    2. Added ability to suppress cli output for smtp, var-dumper, ray and sentry

    If you don't want to see dump output in your terminal, you can disable it through ENV variables:

    CLI_SMTP_STREAM=false
    CLI_VAR_DUMPER_STREAM=false
    CLI_SENTRY_STREAM=false
    CLI_RAY_STREAM=false
    

    Example

    docker run --pull always --env CLI_SMTP_STREAM=false --env CLI_SENTRY_STREAM=false -p 23517:8000 -p 1025:1025 -p 9912:9912 butschster/debugger:latest
    
    1. Fixed app name
    2. Fixed debug int values with spatie/ray
    Source code(tar.gz)
    Source code(zip)
  • v1.16.2(Sep 4, 2021)

  • v1.16(Sep 3, 2021)

  • v1.15(Sep 2, 2021)

    image 41 (4)

    • Added support for rendering Sentry errors in a terminal
    • added support for ray event for console
    • added support for ray query for console
    • added support for ray job for console
    • added support for ray view for console
    Source code(tar.gz)
    Source code(zip)
  • v1.12(Sep 1, 2021)

    Also you can see event from VarDumper or spatie/ray in a bash terminal instead of GUI.

    See https://symfony.com/doc/current/components/var_dumper.html#the-dump-server

    If you want to send data to a dump server you need to configure your .env

    VAR_DUMPER_FORMAT=server
    VAR_DUMPER_SERVER=127.0.0.1:9912
    

    Group 48 (1)

    Source code(tar.gz)
    Source code(zip)
  • v1.11(Aug 27, 2021)

    Now you can use RayServer as an email testing tool.

    Just configure your .env for mail

    MAIL_MAILER=smtp
    MAIL_HOST=127.0.0.1
    MAIL_PORT=1025
    
    Source code(tar.gz)
    Source code(zip)
  • v1.10.4(Aug 24, 2021)

  • v1.10.3(Aug 20, 2021)

  • v1.10.2(Aug 20, 2021)

  • v1.10.1(Aug 20, 2021)

😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.

Tracy - PHP debugger Introduction Tracy library is a useful helper for everyday PHP programmers. It helps you to: quickly detect and correct errors lo

Nette Foundation 1.6k Dec 23, 2022
Xdebug — Step Debugger and Debugging Aid for PHP

Xdebug Xdebug is a debugging tool for PHP. It provides step-debugging and a whole range of development aids, such as stack traces, a code profiler, fe

Xdebug 2.8k Jan 3, 2023
Kint - a powerful and modern PHP debugging tool.

Kint - debugging helper for PHP developers What am I looking at? At first glance Kint is just a pretty replacement for var_dump(), print_r() and debug

null 2.7k Dec 25, 2022
A collection of helper methods for testing and debugging API endpoints.

Laravel API Test Helpers This is a collection of helper methods for testing and debugging API endpoints. Installation You can install the package via

Stephen Jude 49 Jul 26, 2022
The ultimate debugging and development tool for ProcessWire

Tracy Debugger for ProcessWire The ultimate “swiss army knife” debugging and development tool for the ProcessWire CMF/CMS Integrates and extends Nette

Adrian Jones 80 Oct 5, 2022
Sage - Insightful PHP debugging assistant ☯

Sage - Insightful PHP debugging assistant ☯ At first glance Sage is just a pretty replacement for var_dump() and debug_backtrace(). However, it's much

null 27 Dec 26, 2022
WordPress debugging made simple.

Loginator Debugging WordPress can sometimes be a pain, our goal is to make it easy, which is why Loginator was built with this in mind. From creating

Poly Plugins 2 Feb 12, 2022
A beautiful error page for Laravel apps

Ignition: a beautiful error page for Laravel apps Ignition is a beautiful and customizable error page for Laravel applications running on Laravel 5.5

Facade 2k Jan 1, 2023
Clockwork - php dev tools in your browser - server-side component

Clockwork is a development tool for PHP available right in your browser. Clockwork gives you an insight into your application runtime - including requ

its 4.8k Dec 29, 2022
Runs artisan command in web application

Laravel Terminal Installation composer require recca0120/terminal --dev OR Add Presenter to your composer.json file: "require-dev": { "recca0120/t

Recca Tsai 783 Dec 27, 2022
Silex Web Profiler

The Silex Web Profiler service provider allows you to use the wonderful Symfony web debug toolbar and the Symfony profiler in your Silex 2.x application.

Silex 209 Dec 5, 2022
Generate Laravel test factories from your existing models

Laravel Test Factory Generator php artisan generate:model-factory This package will generate factories from your existing models so you can get starte

Marcel Pociot 923 Dec 16, 2022
Php Debugger to run in terminal to debug your code easily.

What is Dephpugger? Dephpugger (read depugger) is an open source lib to make a debug in php direct in terminal, without necessary configure an IDE. Th

Renato Cassino 190 Dec 3, 2022
Test your routes without hassle

Laravel Api Tester Live demo Try it out: laravel-api-tester.asva.by Docs Those are short and easy to read. Take a look. Interface FAQ Installation Req

Yauheni Prakopchyk 343 Nov 6, 2022
An artisan command to tail your application logs

Easily tail your logs This package offers an artisan command to tail the application log. It supports daily and single logs on your local machine. To

Spatie 677 Dec 29, 2022
Php Debugger to run in terminal to debug your code easily.

What is Dephpugger? Dephpugger (read depugger) is an open source library that allows a developer to debug in php direct in terminal, without necessary

Renato Cassino 190 Dec 3, 2022
A simple Craft module, inspired by Mildly Geeky's "Kint", to debug Twig within your browser

A simple Craft module, inspired by Mildly Geeky's "Kint", to debug Twig within your browser

TrendyMinds 4 Feb 2, 2022
Laravel Dumper - Improve the default output of dump() and dd() in Laravel projects

Laravel Dumper Improve the default output of dump() and dd() in Laravel projects. Improves the default dump behavior for many core Laravel objects, in

Galahad 301 Dec 26, 2022
This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception Tracking.

Tideways Middleware for Laravel Octane This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception T

Tideways 7 Jan 6, 2022