Kotchasan Framework Documentation

Kotchasan Framework Documentation

Kotchasan\Logger\QueryLogger

EN 05 Feb 2026 07:40

Kotchasan\Logger\QueryLogger

QueryLogger is a specialized logger for recording database queries with execution time tracking.

Usage

use Kotchasan\Logger\QueryLogger;
use Kotchasan\Logger\FileLogger;

// Create QueryLogger with FileLogger
$fileLogger = new FileLogger('queries.log');
$queryLogger = new QueryLogger($fileLogger, true); // true = track time

// Log query
$startTime = $queryLogger->logQuery('SELECT * FROM users WHERE id = ?', [1]);

// ... execute query ...

$queryLogger->logQueryResult(
    'SELECT * FROM users WHERE id = ?',
    [1],
    $startTime,
    10  // affected rows
);

Constructor

public function __construct(LoggerInterface $logger, bool $trackTime = true)

Main Methods

logQuery()

Log query before execution.

public function logQuery(string $query, array $bindings = []): ?float

logQueryResult()

Log result after execution.

public function logQueryResult(
    string $query,
    array $bindings,
    ?float $startTime,
    int $rowCount
): void

getQueries() / getTotalTime() / getAverageTime()

public function getQueries(): array      // All executed queries
public function getQueryCount(): int     // Total count
public function getTotalTime(): float    // Total time (seconds)
public function getAverageTime(): float  // Average time (seconds)

Example

Debug Panel

$queryLogger = new QueryLogger(new ConsoleLogger());

// After processing...
echo "Total Queries: " . $queryLogger->getQueryCount() . "\n";
echo "Total Time: " . number_format($queryLogger->getTotalTime() * 1000, 2) . "ms\n";

foreach ($queryLogger->getQueries() as $query) {
    echo $query['query'] . " - " . number_format($query['time'] * 1000, 2) . "ms\n";
}