class AutoRootSpan
Hierarchy
- class \OpenTelemetry\SDK\Trace\AutoRootSpan uses \OpenTelemetry\API\Behavior\LogsMessagesTrait
Expanded class hierarchy of AutoRootSpan
1 file declares its use of AutoRootSpan
- SdkAutoloader.php in vendor/
open-telemetry/ sdk/ SdkAutoloader.php
File
-
vendor/
open-telemetry/ sdk/ Trace/ AutoRootSpan.php, line 23
Namespace
OpenTelemetry\SDK\TraceView source
class AutoRootSpan {
use LogsMessagesTrait;
public static function isEnabled() : bool {
return !empty($_SERVER['REQUEST_METHOD'] ?? null) && Configuration::getBoolean(Variables::OTEL_PHP_EXPERIMENTAL_AUTO_ROOT_SPAN);
}
/**
* @psalm-suppress ArgumentTypeCoercion
* @internal
*/
public static function create(ServerRequestInterface $request) : void {
$tracer = Globals::tracerProvider()->getTracer('io.opentelemetry.php.auto-root-span', null, Version::VERSION_1_25_0->url());
$parent = Globals::propagator()->extract($request->getHeaders());
$startTime = array_key_exists('REQUEST_TIME_FLOAT', $request->getServerParams()) ? $request->getServerParams()['REQUEST_TIME_FLOAT'] : (int) microtime(true);
$span = $tracer->spanBuilder($request->getMethod())
->setSpanKind(SpanKind::KIND_SERVER)
->setStartTimestamp((int) ($startTime * ClockInterface::NANOS_PER_SECOND))
->setParent($parent)
->setAttribute(TraceAttributes::URL_FULL, (string) $request->getUri())
->setAttribute(TraceAttributes::HTTP_REQUEST_METHOD, $request->getMethod())
->setAttribute(TraceAttributes::HTTP_REQUEST_BODY_SIZE, $request->getHeaderLine('Content-Length'))
->setAttribute(TraceAttributes::USER_AGENT_ORIGINAL, $request->getHeaderLine('User-Agent'))
->setAttribute(TraceAttributes::SERVER_ADDRESS, $request->getUri()
->getHost())
->setAttribute(TraceAttributes::SERVER_PORT, $request->getUri()
->getPort())
->setAttribute(TraceAttributes::URL_SCHEME, $request->getUri()
->getScheme())
->setAttribute(TraceAttributes::URL_PATH, $request->getUri()
->getPath())
->startSpan();
Context::storage()->attach($span->storeInContext($parent));
}
/**
* @internal
*/
public static function createRequest() : ?ServerRequestInterface {
assert(array_key_exists('REQUEST_METHOD', $_SERVER) && !empty($_SERVER['REQUEST_METHOD']));
try {
$creator = new ServerRequestCreator(Psr17FactoryDiscovery::findServerRequestFactory(), Psr17FactoryDiscovery::findUriFactory(), Psr17FactoryDiscovery::findUploadedFileFactory(), Psr17FactoryDiscovery::findStreamFactory());
return $creator->fromGlobals();
} catch (NotFoundException $e) {
self::logError('Unable to initialize server request creator for auto root span creation', [
'exception' => $e,
]);
}
return null;
}
/**
* @internal
*/
public static function registerShutdownHandler() : void {
ShutdownHandler::register(self::shutdownHandler(...));
}
/**
* @internal
*/
public static function shutdownHandler() : void {
$scope = Context::storage()->scope();
if (!$scope) {
return;
}
$scope->detach();
$span = Span::fromContext($scope->context());
$span->end();
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
AutoRootSpan::create | public static | function | @psalm-suppress ArgumentTypeCoercion @internal |
AutoRootSpan::createRequest | public static | function | @internal |
AutoRootSpan::isEnabled | public static | function | |
AutoRootSpan::registerShutdownHandler | public static | function | @internal |
AutoRootSpan::shutdownHandler | public static | function | @internal |
LogsMessagesTrait::doLog | private static | function | |
LogsMessagesTrait::logDebug | protected static | function | |
LogsMessagesTrait::logError | protected static | function | |
LogsMessagesTrait::logInfo | protected static | function | |
LogsMessagesTrait::logNotice | protected static | function | |
LogsMessagesTrait::logWarning | protected static | function | |
LogsMessagesTrait::shouldLog | private static | function |