public function RequestSubscriber::collectDatabaseLog in Raven: Sentry Integration 3.x
If database was initialized, create a span for each logged query.
1 call to RequestSubscriber::collectDatabaseLog()
- RequestSubscriber::onTerminate in src/
EventSubscriber/ RequestSubscriber.php - Performance tracing.
File
- src/
EventSubscriber/ RequestSubscriber.php, line 131
Class
- RequestSubscriber
- Initializes Raven logger so Sentry functions can be called.
Namespace
Drupal\raven\EventSubscriberCode
public function collectDatabaseLog() {
if (!$this->transaction || !$this->container || !$this->container
->initialized('database')) {
return;
}
$connections = [];
foreach (Database::getAllConnectionInfo() as $key => $info) {
try {
$database = Database::getConnection('default', $key);
if ($logger = $database
->getLogger()) {
$connections[$key] = $logger
->get('raven');
}
} catch (\Exception $e) {
// Could not connect.
}
}
foreach ($connections as $key => $queries) {
foreach ($queries as $query) {
if (empty($query['start'])) {
// Older versions of Drupal do not record query start time.
return;
}
$context = new SpanContext();
$context
->setOp('sql.query');
$context
->setDescription($query['query']);
$context
->setTags([
'database' => $key,
]);
$context
->setStartTimestamp($query['start']);
$context
->setEndTimestamp($query['start'] + $query['time']);
$this->transaction
->startChild($context);
}
}
}