Configure and use logging with PDOdb.
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$logger = new Logger('database');
$logger->pushHandler(new StreamHandler('php://stdout'));
$db = new PdoDb('mysql', [
'host' => 'localhost',
'dbname' => 'test'
], [], $logger);$db->enableQueryLog();
// Execute queries
$users = $db->find()->from('users')->get();
$orders = $db->find()->from('orders')->get();
// Get log
$log = $db->getQueryLog();
foreach ($log as $entry) {
echo $entry['sql'] . "\n";
echo "Time: " . $entry['time'] . "ms\n";
}$db->disableQueryLog();// Logs connection attempts and failures
$logger->info('Connecting to database', [
'host' => 'localhost',
'database' => 'mydb'
]);// Logs executed queries
$logger->debug('Executing query', [
'sql' => $sql,
'params' => $params,
'time' => $executionTime
]);try {
$users = $db->find()->from('users')->get();
} catch (QueryException $e) {
$logger->error('Query failed', [
'error' => $e->getMessage(),
'code' => $e->getCode()
]);
}use Monolog\Handler\AbstractHandler;
class DatabaseHandler extends AbstractHandler {
public function handle(array $record): bool {
// Save to database
// ...
return true;
}
}
$handler = new DatabaseHandler();
$logger->pushHandler($handler);- Exception Hierarchy - Exception types
- Monitoring - Error tracking
- Retry Logic - Build retry logic