Laravel-debugbalk kan niet in productie worden uitgevoerd, omdat het al uw query's aan iedereen zal tonen. En het beperken tot bepaalde IP's / e-mailadressen is ook moeilijk en geeft gemakkelijk te veel informatie bloot.
Daarom heb ik een eenvoudig alternatief loggingscript gemaakt dat vergelijkbare informatie weergeeft.
Alternatief: uw eigen queryduurlogger uitvoeren wanneer u bent ingelogd met e-mailadres x

Dit is ons alternatief:
Maak uw eigen middleware die de queryduur registreert wanneer u bent ingelogd:
Maak eerst een nieuwe middleware QueryLogger:
class QueryLogger
{
public function handle($request, Closure $next)
{
session(['db_queries' => []]);
if (auth()->check() && auth()->user()->email === '[email protected]') {
DB::listen(function($query) {
$time = $query->time;
$sql = $query->sql;
$bindings = $query->bindings;
// Store query info in session for display
$queries = session('db_queries', []);
$queries[] = [
'sql' => $sql,
'bindings' => $bindings,
'time' => $time
];
session(['db_queries' => $queries]);
});
}
return $next($request);
}
} Vervang [email protected] door uw e-mailadres.
Registreer vervolgens de middleware in uw app/Http/Kernel.phpVoeg het toe aan de webmiddlewaregroep (dit is belangrijk omdat we de authenticatie- en sessiemiddleware beschikbaar moeten hebben):
protected $middlewareGroups = [ 'web' => [ // andere middleware \App\Http\Middleware\QueryLogger::class, // Voeg deze regel toe ], // ... ];Maak nu een gedeeltelijke weergave om de query's weer te geven. Maak een nieuw bestand bronnen/weergaven/gedeeltelijk/query-logger.blade.php:
@if(auth()->check() && auth()->user()->email === '[email protected]' && session()->has('db_queries'))
<div class="query-logger" style="position: fixed; bottom: 0; right: 0; background: rgba(0,0,0,0.8); color: #fff; padding: 10px; max-height: 300px; overflow-y: auto; width: 400px; z-index: 9999; font-family: monospace; font-size: 12px;">
<h4 style="margin: 0 0 10px 0;">Databasevragen</h4>
@php $queries = session('db_queries'); $totalTime = 0; @endphp @foreach($queries als $query) @php $totalTime += $query['tijd']; $sql = $query['sql']; foreach($query['bindings'] als $binding) { $sql = preg_replace('/\?/', is_numeriek($binding) ? $binding : "'$binding'", $sql, 1); } @endphp
<div style="margin-bottom: 10px; padding: 5px; border-bottom: 1px solid rgba(255,255,255,0.1);">
<div style="color: #00ff00;">Tijd: {{ number_format($query['time'], 2) }}ms</div>
<div style="word-break: break-all;">{{ $sql }}</div>
</div>
@endforeach
<div style="margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(255,255,255,0.1);">
<strong>Totale tijd: {{ number_format($totalTime, 2) }}ms</strong>
</div>
</div>
@endif Vervang [email protected] door uw e-mailadres.
Voeg ten slotte het gedeeltelijke bestand toe aan uw hoofdlay-outbestand (meestal bronnen/views/app.blade.php of iets dergelijks) vlak voor de sluiting </body> label:
@include('partials.query-logger')Nu, wanneer u bent ingelogd met uw e-mailadres, ziet u een query logger overlay in de rechterbenedenhoek van uw scherm. Het toont:
- Elke SQL-query met de werkelijke waarden (geen tijdelijke aanduidingen)
- Uitvoeringstijd voor elke query in milliseconden
- Totale uitvoeringstijd voor alle query's
De overlay is gestyled met een donkere semi-transparante achtergrond en monospace-lettertype voor betere leesbaarheid. Het is scrollbaar als er veel query's zijn.
Vergeet niet om '[email protected]' te vervangen door uw daadwerkelijke e-mailadres in zowel de middleware als het weergavebestand.
Deze oplossing biedt u een lichtgewicht alternatief voor Laravel Debugbar, perfect voor productieomgevingen waarin u prestatieproblemen met databases moet debuggen.
Er worden nog steeds query's weergegeven, dus als ze verkeerd worden uitgevoerd, ergens in de cache worden geplaatst of door de server worden opgeslagen, kunnen ze nog steeds worden blootgesteld. Wees verstandig in het gebruik van dit script.
Laatst bijgewerkt op 25 maart 2025
