Kotchasan Framework Documentation
Kotchasan\Logger\QueryLogger
Kotchasan\Logger\QueryLogger
QueryLogger เป็น logger เฉพาะสำหรับบันทึก database queries พร้อมติดตามเวลาการทำงาน
การใช้งาน
use Kotchasan\Logger\QueryLogger;
use Kotchasan\Logger\FileLogger;
// สร้าง QueryLogger พร้อม FileLogger
$fileLogger = new FileLogger('queries.log');
$queryLogger = new QueryLogger($fileLogger, true); // true = track time
// บันทึก 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)Parameters:
$logger- Logger instance สำหรับเขียน log$trackTime- ติดตามเวลาการทำงาน (default: true)
เมธอดหลัก
logQuery()
บันทึก query ก่อน execute
public function logQuery(string $query, array $bindings = []): ?floatReturns: Start time (ถ้า trackTime = true)
logQueryResult()
บันทึกผลลัพธ์หลัง execute
public function logQueryResult(
string $query,
array $bindings,
?float $startTime,
int $rowCount
): voidlogQueryError()
บันทึก error
public function logQueryError(string $query, array $bindings, string $error): voidgetQueries() / getQueryCount()
ดึงรายการ queries ที่ execute
public function getQueries(): array
public function getQueryCount(): intgetTotalTime() / getAverageTime()
ดึงเวลาการทำงาน
public function getTotalTime(): float // รวมทั้งหมด (วินาที)
public function getAverageTime(): float // เฉลี่ย (วินาที)ตัวอย่าง
Debug Panel
use Kotchasan\Logger\QueryLogger;
use Kotchasan\Logger\ConsoleLogger;
$queryLogger = new QueryLogger(new ConsoleLogger());
// After processing...
echo "Query Statistics:\n";
echo "Total Queries: " . $queryLogger->getQueryCount() . "\n";
echo "Total Time: " . number_format($queryLogger->getTotalTime() * 1000, 2) . "ms\n";
echo "Average Time: " . number_format($queryLogger->getAverageTime() * 1000, 2) . "ms\n";
foreach ($queryLogger->getQueries() as $i => $query) {
echo "\n{$i}. {$query['query']}\n";
if ($query['time']) {
echo " Time: " . number_format($query['time'] * 1000, 2) . "ms\n";
}
}คลาสที่เกี่ยวข้อง
- Logger Overview
- [FileLogger]