summaryrefslogtreecommitdiff
path: root/vendor/open-telemetry/sdk/Logs/LoggerProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/open-telemetry/sdk/Logs/LoggerProvider.php')
-rw-r--r--vendor/open-telemetry/sdk/Logs/LoggerProvider.php56
1 files changed, 56 insertions, 0 deletions
diff --git a/vendor/open-telemetry/sdk/Logs/LoggerProvider.php b/vendor/open-telemetry/sdk/Logs/LoggerProvider.php
new file mode 100644
index 000000000..f0a8266c1
--- /dev/null
+++ b/vendor/open-telemetry/sdk/Logs/LoggerProvider.php
@@ -0,0 +1,56 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OpenTelemetry\SDK\Logs;
+
+use OpenTelemetry\API\Logs\LoggerInterface;
+use OpenTelemetry\API\Logs\NoopLogger;
+use OpenTelemetry\SDK\Common\Future\CancellationInterface;
+use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeFactoryInterface;
+use OpenTelemetry\SDK\Resource\ResourceInfo;
+use OpenTelemetry\SDK\Resource\ResourceInfoFactory;
+
+class LoggerProvider implements LoggerProviderInterface
+{
+ private LoggerSharedState $loggerSharedState;
+ private InstrumentationScopeFactoryInterface $instrumentationScopeFactory;
+
+ public function __construct(LogRecordProcessorInterface $processor, InstrumentationScopeFactoryInterface $instrumentationScopeFactory, ?ResourceInfo $resource = null)
+ {
+ $this->loggerSharedState = new LoggerSharedState(
+ $resource ?? ResourceInfoFactory::defaultResource(),
+ (new LogRecordLimitsBuilder())->build(),
+ $processor
+ );
+ $this->instrumentationScopeFactory = $instrumentationScopeFactory;
+ }
+
+ /**
+ * @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/sdk.md#logger-creation
+ */
+ public function getLogger(string $name, ?string $version = null, ?string $schemaUrl = null, iterable $attributes = []): LoggerInterface
+ {
+ if ($this->loggerSharedState->hasShutdown()) {
+ return NoopLogger::getInstance();
+ }
+ $scope = $this->instrumentationScopeFactory->create($name, $version, $schemaUrl, $attributes);
+
+ return new Logger($this->loggerSharedState, $scope);
+ }
+
+ public function shutdown(CancellationInterface $cancellation = null): bool
+ {
+ return $this->loggerSharedState->shutdown($cancellation);
+ }
+
+ public function forceFlush(CancellationInterface $cancellation = null): bool
+ {
+ return $this->loggerSharedState->forceFlush($cancellation);
+ }
+
+ public static function builder(): LoggerProviderBuilder
+ {
+ return new LoggerProviderBuilder();
+ }
+}