Files
xk-api-old-laravel/app/Handlers/QueryDetectorLogHandler.php
2025-01-11 14:16:20 +08:00

42 lines
1.1 KiB
PHP

<?php
namespace App\Handlers;
use BeyondCode\QueryDetector\Outputs\Output;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log as LaravelLog;
use Symfony\Component\HttpFoundation\Response;
class QueryDetectorLogHandler implements Output
{
public function boot()
{
}
public function output(Collection $detectedQueries, Response $response)
{
$this->log('Detected N+1 Query');
foreach ($detectedQueries as $detectedQuery) {
$logOutput = 'Model: ' . $detectedQuery['model'] . PHP_EOL;
$logOutput .= 'Relation: ' . $detectedQuery['relation'] . PHP_EOL;
$logOutput .= 'Num-Called: ' . $detectedQuery['count'] . PHP_EOL;
$logOutput .= 'Call-Stack:' . PHP_EOL;
foreach ($detectedQuery['sources'] as $source) {
$logOutput .= '#' . $source->index . ' ' . $source->name . ':' . $source->line . PHP_EOL;
}
$this->log($logOutput);
}
}
private function log(string $message)
{
LaravelLog::channel('query_detector')->info($message);
}
}