Laravel Debugleiste kann nicht in der Produktion ausgeführt werden, da alle Ihre Abfragen jedem angezeigt werden. Auch die Beschränkung auf bestimmte IP-/E-Mail-Adressen ist schwierig und gibt leicht zu viele Informationen preis.
Aus diesem Grund habe ich ein einfaches alternatives Protokollierungsskript erstellt, das ähnliche Informationen anzeigt.
Alternative: Ausführen eines eigenen Abfragedauer-Loggers bei Anmeldung mit E-Mail-Adresse x

Das ist unsere Alternative:
Erstellen Sie Ihre eigene Middleware, die die Abfragedauer bei Anmeldung registriert:
Erstellen Sie zunächst einen neuen 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);
}
} Ersetzen Sie [email protected] durch Ihre E-Mail-Adresse.
Registrieren Sie dann die Middleware in Ihrem app/Http/Kernel.php. Fügen Sie es der Web-Middleware-Gruppe hinzu (das ist wichtig, da die Authentifizierungs- und Sitzungs-Middleware verfügbar sein muss):
geschützt $middlewareGroups = [ 'web' => [ // andere Middleware \App\Http\Middleware\QueryLogger::class, // Diese Zeile hinzufügen ], // ... ];Erstellen Sie nun eine Teilansicht zur Anzeige der Abfragen. Erstellen Sie eine neue Datei Ressourcen/Ansichten/Partials/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;">Datenbankabfragen</h4>
@php $queries = Sitzung('db_queries'); $Gesamtzeit = 0; @endphp @foreach($queries als $query) @php $Gesamtzeit += $query['Zeit']; $sql = $query['SQL']; foreach($query['Bindungen'] als $Binding) { $sql = preg_replace('/\?/', is_numeric($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;">Zeit: {{ 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>Gesamtzeit: {{ number_format($totalTime, 2) }}ms</strong>
</div>
</div>
@endif Ersetzen Sie [email protected] durch Ihre E-Mail-Adresse.
Schließlich fügen Sie den Teil in Ihre Hauptlayoutdatei ein (normalerweise Ressourcen/Ansichten/app.blade.php oder ähnliches) kurz vor der Schließung </body> Etikett:
@include('partials.query-logger')Wenn Sie nun mit Ihrer E-Mail-Adresse angemeldet sind, wird in der unteren rechten Ecke Ihres Bildschirms ein Abfrage-Logger-Overlay angezeigt. Es zeigt:
- Jede SQL-Abfrage mit den tatsächlichen Werten (keine Platzhalter)
- Ausführungszeit für jede Abfrage in Millisekunden
- Gesamtausführungszeit für alle Abfragen
Das Overlay ist mit einem dunklen, halbtransparenten Hintergrund und einer Monospace-Schriftart gestaltet, um die Lesbarkeit zu verbessern. Bei vielen Abfragen ist es scrollbar.
Denken Sie daran, sowohl in der Middleware als auch in der Ansichtsdatei „[email protected]“ durch Ihre tatsächliche E-Mail-Adresse zu ersetzen.
Diese Lösung bietet Ihnen eine leichtgewichtige Alternative zur Laravel Debugbar, perfekt für Produktionsumgebungen, in denen Sie Datenbankleistungsprobleme debuggen müssen.
Es werden weiterhin Abfragen angezeigt. Wenn diese also falsch ausgeführt, zwischengespeichert oder irgendwo auf dem Server gespeichert werden, können sie dennoch offengelegt werden. Gehen Sie bei der Verwendung dieses Skripts mit Bedacht vor.
Zuletzt aktualisiert am 25. März 2025
