/** * @param string $name * @param string $databaseName * * @return Client */ public function getClient(string $name, string $databaseName = null) : Client { $clientKey = !is_null($databaseName) ? $name . '.' . $databaseName : $name; if (!isset($this->clients[$clientKey])) { $conf = $this->configurations[$name]; $uri = sprintf('mongodb://%s:%d', $conf->getHost(), $conf->getPort()); $options = array_merge(['database' => $databaseName], $conf->getOptions()); $this->clients[$clientKey] = $this->buildClient($uri, $options, []); $this->logger->addConnection($clientKey); } return $this->clients[$clientKey]; }
/** * {@inheritdoc} */ public function collect(Request $request, Response $response, \Exception $exception = null) { while ($this->logger->hasLoggedEvents()) { /** @var LogEvent $event */ $event = $this->logger->getLoggedEvent(); // with extension version under 1.2.0 some Mongo objects can't be automatically serialized if (-1 === version_compare(phpversion('mongodb'), '1.2.0')) { MongoLogEventSerializer::serialize($event); } $this->data[self::QUERY_KEYWORD][] = $event; $this->data[self::TIME_KEYWORD] += $event->getExecutionTime(); } $this->data[self::CONNECTION_KEYWORD] = $this->logger->getConnections(); }
/** * @param string $method * @param array|object $filters * @param array|object $data * @param array $options * * @return LogEvent */ private function startQueryLogging(string $method, $filters = null, $data = null, array $options) : LogEvent { $debugInfo = $this->__debugInfo(); $event = new LogEvent(); $event->setFilters($filters); $event->setData($data); $event->setOptions($options); $event->setMethod($method); $event->setCollection($debugInfo['collectionName']); $this->logger->startLogging($event); return $event; }