class Globals
Provides access to the globally configured instrumentation instances.
Hierarchy
- class \OpenTelemetry\API\Globals uses \OpenTelemetry\API\Behavior\LogsMessagesTrait
Expanded class hierarchy of Globals
3 files declare their use of Globals
- AutoRootSpan.php in vendor/
open-telemetry/ sdk/ Trace/ AutoRootSpan.php - CachedInstrumentation.php in vendor/
open-telemetry/ api/ Instrumentation/ CachedInstrumentation.php - SdkAutoloader.php in vendor/
open-telemetry/ sdk/ SdkAutoloader.php
5 string references to 'Globals'
- GlobalState::getGlobalsAsString in vendor/
phpunit/ phpunit/ src/ Util/ GlobalState.php - Restorer::restoreGlobalVariables in vendor/
sebastian/ global-state/ src/ Restorer.php - Snapshot::snapshotGlobals in vendor/
sebastian/ global-state/ src/ Snapshot.php - ValidVariableNameSniff::processVariable in vendor/
drupal/ coder/ coder_sniffer/ Drupal/ Sniffs/ NamingConventions/ ValidVariableNameSniff.php - Processes normal variables.
- VariableAnalysisSniff::processVariableAsSuperGlobal in vendor/
sirbrillig/ phpcs-variable-analysis/ VariableAnalysis/ Sniffs/ CodeAnalysis/ VariableAnalysisSniff.php - * Process a superglobal variable that is being accessed. * * Can be called for any token and will return false if the variable is not * of this type. * *
File
-
vendor/
open-telemetry/ api/ Globals.php, line 24
Namespace
OpenTelemetry\APIView source
final class Globals {
use LogsMessagesTrait;
/** @var Closure[] */
private static array $initializers = [];
private static ?self $globals = null;
public function __construct(TracerProviderInterface $tracerProvider, MeterProviderInterface $meterProvider, LoggerProviderInterface $loggerProvider, EventLoggerProviderInterface $eventLoggerProvider, TextMapPropagatorInterface $propagator) {
}
public static function tracerProvider() : TracerProviderInterface {
return Context::getCurrent()->get(ContextKeys::tracerProvider()) ?? self::globals()->tracerProvider;
}
public static function meterProvider() : MeterProviderInterface {
return Context::getCurrent()->get(ContextKeys::meterProvider()) ?? self::globals()->meterProvider;
}
public static function propagator() : TextMapPropagatorInterface {
return Context::getCurrent()->get(ContextKeys::propagator()) ?? self::globals()->propagator;
}
public static function loggerProvider() : LoggerProviderInterface {
return Context::getCurrent()->get(ContextKeys::loggerProvider()) ?? self::globals()->loggerProvider;
}
public static function eventLoggerProvider() : EventLoggerProviderInterface {
return Context::getCurrent()->get(ContextKeys::eventLoggerProvider()) ?? self::globals()->eventLoggerProvider;
}
/**
* @param Closure(Configurator): Configurator $initializer
*
* @internal
* @psalm-internal OpenTelemetry
* @todo In a future (breaking) change, we can remove `Registry` and globals initializers, in favor of SPI.
*/
public static function registerInitializer(Closure $initializer) : void {
self::$initializers[] = $initializer;
}
/**
* @phan-suppress PhanTypeMismatchReturnNullable
*/
private static function globals() : self {
if (self::$globals !== null) {
return self::$globals;
}
$configurator = Configurator::createNoop();
$scope = $configurator->activate();
try {
foreach (self::$initializers as $initializer) {
try {
$configurator = $initializer($configurator);
} catch (Throwable $e) {
self::logWarning(sprintf("Error during opentelemetry initialization: %s\n%s", $e->getMessage(), $e->getTraceAsString()));
}
}
} finally {
$scope->detach();
}
$context = $configurator->storeInContext();
$tracerProvider = $context->get(ContextKeys::tracerProvider());
$meterProvider = $context->get(ContextKeys::meterProvider());
$propagator = $context->get(ContextKeys::propagator());
$loggerProvider = $context->get(ContextKeys::loggerProvider());
$eventLoggerProvider = $context->get(ContextKeys::eventLoggerProvider());
assert(isset($tracerProvider, $meterProvider, $loggerProvider, $eventLoggerProvider, $propagator));
return self::$globals = new self($tracerProvider, $meterProvider, $loggerProvider, $eventLoggerProvider, $propagator);
}
/**
* @internal
*/
public static function reset() : void {
self::$globals = null;
self::$initializers = [];
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
Globals::$globals | private static | property | |
Globals::$initializers | private static | property | @var Closure[] |
Globals::eventLoggerProvider | public static | function | |
Globals::globals | private static | function | @phan-suppress PhanTypeMismatchReturnNullable |
Globals::loggerProvider | public static | function | |
Globals::meterProvider | public static | function | |
Globals::propagator | public static | function | |
Globals::registerInitializer | public static | function | @internal @psalm-internal OpenTelemetry @todo In a future (breaking) change, we can remove `Registry` and globals initializers, in favor of SPI. |
Globals::reset | public static | function | @internal |
Globals::tracerProvider | public static | function | |
Globals::__construct | public | function | |
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 |