bugban / symfony
Bugban error & monitoring SDK — Symfony bundle that auto-captures exceptions.
Package info
github.com/Umid-ismayilov/bugban-symfony
Type:symfony-bundle
pkg:composer/bugban/symfony
Requires
- php: >=7.1
- bugban/php-sdk: ^1.5.3
- symfony/config: >=3.4
- symfony/dependency-injection: >=3.4
- symfony/event-dispatcher: >=3.4
- symfony/http-kernel: >=3.4
README
Symfony bundle for the Bugban error & monitoring SDK.
It auto-captures unhandled exceptions via a kernel.exception listener and
initializes the framework-agnostic bugban/php-sdk core for you.
Compatible with Symfony 3.4 → 7.x and PHP 7.1+.
Install
composer require bugban/symfony
Enable the bundle
Add it to config/bundles.php (Symfony Flex / 4+):
// config/bundles.php return [ // ... Bugban\Symfony\BugbanBundle::class => ['all' => true], ];
On Symfony 3.4 (AppKernel), add it to registerBundles():
public function registerBundles() { $bundles = [ // ... new Bugban\Symfony\BugbanBundle(), ]; return $bundles; }
Configure
Create config/packages/bugban.yaml:
bugban: api_key: '%env(BUGBAN_API_KEY)%' host: 'https://bugban.online' # environment: '%kernel.environment%' # release: '1.0.0' # enabled: true # capture_requests: false # capture_queries: true # slow_query_ms: 1000 # sample_rate: 1.0
Then set your API key (e.g. in .env):
BUGBAN_API_KEY=bb_xxxxxxxxxxxxxxxx
That's it — unhandled exceptions are now reported to Bugban automatically.
Manual capture
You can also report manually anywhere in your app:
use Bugban\Sdk\Bugban; try { // ... } catch (\Throwable $e) { Bugban::capture($e); } // Or a message: Bugban::captureMessage('Something noteworthy happened', 'warning');
Configuration reference
| Key | Type | Default |
|---|---|---|
api_key |
string | '' |
host |
string | https://bugban.online |
environment |
string | production |
release |
string | null |
enabled |
bool | true |
capture_requests |
bool | false |
capture_queries |
bool | true |
slow_query_ms |
int | 1000 |
sample_rate |
float | 1.0 |
Slow query monitoring
Doctrine's SQLLogger interface was removed in DBAL 4, so the bundle does not hook Doctrine automatically. Pick whichever fits your setup (queries faster than slow_query_ms are always dropped by the SDK):
-
Doctrine DBAL 2.x / 3.x — register the bundled logger yourself (e.g. on
kernel.requestor in a decorator):if (interface_exists(\Doctrine\DBAL\Logging\SQLLogger::class)) { $connection->getConfiguration()->setSQLLogger(new \Bugban\Symfony\Doctrine\BugbanSqlLogger()); }
-
Any DBAL version / no Doctrine — record manually where you run queries:
\Bugban\Sdk\Bugban::recordQuery($sql, $durationMs, ['connection' => 'mysql', 'bindings' => $params]);
-
Plain PDO — use the drop-in
\Bugban\Sdk\Support\TracedPdofrom the core SDK.
Log capture (errors logged but not thrown)
Errors you catch and log — but never re-throw — only hit the log file. Enable
capture_logs in the SDK init and forward them to Bugban with recordLog():
\Bugban\Sdk\Bugban::init([ 'api_key' => 'bb_xxxxxxxx', 'host' => 'https://bugban.online', 'capture_logs' => true, 'log_level' => 'error', // minimum PSR level forwarded ]); // Any framework — from your log pipeline or directly: \Bugban\Sdk\Bugban::recordLog('error', 'Import failed', ['file' => $name]); // Caught-and-logged throwable (attach it for a full stacktrace): try { risky(); } catch (\Throwable $e) { \Bugban\Sdk\Bugban::recordLog('error', $e->getMessage(), ['exception' => $e]); }
Monolog users can register a tiny handler whose write() calls
Bugban::recordLog($record['level_name'] ?? $record->level->getName(), $record['message'] ?? $record->message, $record['context'] ?? $record->context)
(works for Monolog 2 arrays and Monolog 3 LogRecord). Records below log_level
are dropped; context is redacted; recordLog() never throws.