Skip to content

Commit eb23383

Browse files
committed
Make DB connection wrapping configurable and transparent
1 parent 6ff0480 commit eb23383

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ sentry:
3030
- email
3131
session_sections: # optional, list of session sections to track
3232
- mySection
33-
priority_mapping:
33+
priority_mapping: # optional, mapping of custom log levels to ones that's Sentry aware of
3434
mypriority: warning
35+
36+
db_tracing: true # optional, defaults to "false", wraps DB connection so it adds span for every query
3537
```
3638

3739
### Priority-Severity mapping

src/DI/SentryExtension.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Nette\Schema\Expect;
1212
use Nette\Schema\Schema;
1313
use Rootpd\NetteSentry\ApplicationMonitor;
14+
use Rootpd\NetteSentry\DatabaseConnection;
1415
use Rootpd\NetteSentry\SentryLogger;
1516
use Sentry\Integration\EnvironmentIntegration;
1617
use Sentry\Integration\TransactionIntegration;
@@ -55,6 +56,13 @@ public function loadConfiguration()
5556
$logger->addSetup('setProfilesSampleRate', [$this->config->profiles_sample_rate]);
5657
}
5758

59+
if ($this->config->db_tracing) {
60+
/** @var ServiceDefinition $dbDefinition */
61+
$dbDefinition = $this->getContainerBuilder()->getDefinition('database.default.connection');
62+
$dbFactory = $dbDefinition->getFactory();
63+
$dbDefinition->setFactory(DatabaseConnection::class, $dbFactory->arguments);
64+
}
65+
5866
$integrations[] = new Statement(TransactionIntegration::class);
5967
$integrations[] = new Statement(EnvironmentIntegration::class);
6068
}
@@ -71,13 +79,17 @@ public function loadConfiguration()
7179
public function getConfigSchema(): Schema
7280
{
7381
return Expect::structure([
82+
// sentry configs
7483
'dsn' => Expect::string()->dynamic(),
7584
'environment' => Expect::string('local')->dynamic(),
7685
'user_fields' => Expect::listOf(Expect::string())->default([]),
7786
'session_sections' => Expect::listOf(Expect::string())->default([]),
7887
'priority_mapping' => Expect::arrayOf(Expect::string(), Expect::string())->default([]),
7988
'traces_sample_rate' => Expect::float()->dynamic(),
8089
'profiles_sample_rate' => Expect::float()->dynamic(),
90+
91+
// extension configs
92+
'db_tracing' => Expect::bool(false)->dynamic(),
8193
]);
8294
}
8395

0 commit comments

Comments
 (0)