setServiceName($serviceName); $this->setLogger($logger ?? new NullLogger()); $this->setDefaultLogLevel($defaultLogLevel ?? LogLevel::DEBUG); $this->setSpanConverter($converter ?? new FriendlySpanConverter()); $this->setGranularity($granularity); } /** @inheritDoc */ public function doExport(iterable $spans): bool { try { $this->doLog($spans); } catch (Throwable $t) { return false; } return true; } /** * @param string $serviceName */ private function setServiceName(string $serviceName): void { $this->serviceName = $serviceName; } /** * @param int $granularity */ public function setGranularity(int $granularity): void { $this->granularity = $granularity === self::GRANULARITY_SPAN ? self::GRANULARITY_SPAN : self::GRANULARITY_AGGREGATE; } /** * @param iterable $spans */ private function doLog(iterable $spans): void { if ($this->granularity === self::GRANULARITY_AGGREGATE) { $this->log($this->serviceName, $this->getSpanConverter()->convert($spans)); return; } foreach ($spans as $span) { $this->log($this->serviceName, $this->getSpanConverter()->convert([$span])); } } }