Remove event logger (#1480)
* remove EventLogger, add Logger.EmitEvent * populate event_name * remove Logger.EmitEvent was just removed from spec, replacement is not defined yet. * update examples * fix * fix phpstan breaks
This commit is contained in:
parent
8d27d73224
commit
84b8473a7e
|
|
@ -4,12 +4,12 @@ declare(strict_types=1);
|
|||
|
||||
namespace OpenTelemetry\Example;
|
||||
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
|
||||
putenv('OTEL_PHP_AUTOLOAD_ENABLED=true');
|
||||
putenv('OTEL_TRACES_EXPORTER=otlp');
|
||||
putenv('OTEL_METRICS_EXPORTER=otlp');
|
||||
putenv('OTEL_LOGS_EXPORTER=otlp');
|
||||
putenv('OTEL_EXPORTER_OTLP_PROTOCOL=grpc');
|
||||
putenv('OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317');
|
||||
putenv('OTEL_TRACES_EXPORTER=console');
|
||||
putenv('OTEL_METRICS_EXPORTER=console');
|
||||
putenv('OTEL_LOGS_EXPORTER=console');
|
||||
putenv('OTEL_PROPAGATORS=b3,baggage,tracecontext');
|
||||
|
||||
echo 'autoloading SDK example starting...' . PHP_EOL;
|
||||
|
|
@ -21,6 +21,6 @@ $instrumentation = new \OpenTelemetry\API\Instrumentation\CachedInstrumentation(
|
|||
|
||||
$instrumentation->tracer()->spanBuilder('root')->startSpan()->end();
|
||||
$instrumentation->meter()->createCounter('cnt')->add(1);
|
||||
$instrumentation->eventLogger()->emit('foo', 'hello, otel');
|
||||
$instrumentation->logger()->emit((new LogRecord('hello, otel'))->setEventName('foo'));
|
||||
|
||||
echo 'Finished!' . PHP_EOL;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\Config\SDK\Configuration;
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
|
@ -16,13 +17,13 @@ $sdk = $config
|
|||
|
||||
$tracer = $sdk->getTracerProvider()->getTracer('demo');
|
||||
$meter = $sdk->getMeterProvider()->getMeter('demo');
|
||||
$eventLogger = $sdk->getEventLoggerProvider()->getEventLogger('demo');
|
||||
$logger = $sdk->getLoggerProvider()->getLogger('demo');
|
||||
|
||||
$span = $tracer->spanBuilder('root')->startSpan();
|
||||
$scope = $span->activate();
|
||||
$meter->createCounter('cnt')->add(1);
|
||||
|
||||
$eventLogger->emit('foo', 'hello, otel');
|
||||
$logger->emit((new LogRecord('hello, otel'))->setEventName('foo'));
|
||||
$scope->detach();
|
||||
$span->end();
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\Config\SDK\Configuration;
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
|
@ -21,10 +22,10 @@ $sdk = $config
|
|||
|
||||
$tracer = $sdk->getTracerProvider()->getTracer('demo');
|
||||
$meter = $sdk->getMeterProvider()->getMeter('demo');
|
||||
$eventLogger = $sdk->getEventLoggerProvider()->getEventLogger('demo');
|
||||
$logger = $sdk->getLoggerProvider()->getLogger('demo');
|
||||
|
||||
$tracer->spanBuilder('root')->startSpan()->end();
|
||||
$meter->createCounter('cnt')->add(1);
|
||||
$eventLogger->emit('foo', 'hello, otel');
|
||||
$logger->emit((new LogRecord('hello, otel'))->setEventName('foo'));
|
||||
|
||||
echo 'Finished!' . PHP_EOL;
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\Example;
|
||||
|
||||
use OpenTelemetry\API\Common\Time\Clock;
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\API\Signals;
|
||||
use OpenTelemetry\Contrib\Grpc\GrpcTransportFactory;
|
||||
use OpenTelemetry\Contrib\Otlp\LogsExporter;
|
||||
use OpenTelemetry\Contrib\Otlp\OtlpUtil;
|
||||
use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeFactory;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LogRecordLimitsBuilder;
|
||||
use OpenTelemetry\SDK\Logs\Processor\BatchLogRecordProcessor;
|
||||
|
|
@ -29,18 +29,9 @@ $loggerProvider = new LoggerProvider(
|
|||
(new LogRecordLimitsBuilder())->build()->getAttributeFactory()
|
||||
)
|
||||
);
|
||||
$eventLoggerProvider = new EventLoggerProvider($loggerProvider);
|
||||
$eventLogger = $eventLoggerProvider->getEventLogger('demo', '1.0', 'http://schema.url', ['foo' => 'bar']);
|
||||
$logger = $loggerProvider->getLogger('demo', '1.0', 'http://schema.url', ['foo' => 'bar']);
|
||||
|
||||
$eventLogger->emit(
|
||||
name: 'foo',
|
||||
body: ['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world'],
|
||||
severityNumber: Severity::INFO
|
||||
);
|
||||
|
||||
$eventLogger->emit(
|
||||
'bar',
|
||||
'otel is great'
|
||||
);
|
||||
$logger->emit((new LogRecord(['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world']))->setEventName('foo')->setSeverityNumber(Severity::INFO));
|
||||
$logger->emit((new LogRecord('otel is great'))->setEventName('bar'));
|
||||
|
||||
$loggerProvider->shutdown();
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ use OpenTelemetry\API\Logs\Severity;
|
|||
use OpenTelemetry\Contrib\Otlp\LogsExporter;
|
||||
use OpenTelemetry\SDK\Common\Export\Http\PsrTransportFactory;
|
||||
use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeFactory;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LogRecordLimitsBuilder;
|
||||
use OpenTelemetry\SDK\Logs\Processor\SimpleLogRecordProcessor;
|
||||
|
|
@ -27,12 +26,10 @@ $loggerProvider = new LoggerProvider(
|
|||
(new LogRecordLimitsBuilder())->build()->getAttributeFactory()
|
||||
)
|
||||
);
|
||||
$eventLoggerProvider = new EventLoggerProvider($loggerProvider);
|
||||
$eventLogger = $eventLoggerProvider->getEventLogger('demo', '1.0', 'https://opentelemetry.io/schemas/1.7.1', ['foo' => 'bar']);
|
||||
|
||||
$eventLogger->emit(
|
||||
name: 'foo',
|
||||
body: ['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world'],
|
||||
timestamp: (new \DateTime())->getTimestamp() * LogRecord::NANOS_PER_SECOND,
|
||||
severityNumber: Severity::INFO,
|
||||
$logger = $loggerProvider->getLogger('demo', '1.0', 'https://opentelemetry.io/schemas/1.7.1', ['foo' => 'bar']);
|
||||
$logger->emit(
|
||||
(new LogRecord(['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world']))
|
||||
->setEventName('foo')
|
||||
->setSeverityNumber(Severity::INFO)
|
||||
->setTimestamp((new \DateTime())->getTimestamp() * LogRecord::NANOS_PER_SECOND)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,11 +5,10 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\Example;
|
||||
|
||||
use OpenTelemetry\API\Common\Time\Clock;
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\SDK\Common\Attribute\Attributes;
|
||||
use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeFactory;
|
||||
use OpenTelemetry\SDK\Logs\EventLogger;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\Exporter\ConsoleExporterFactory;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\Processor\BatchLogRecordProcessor;
|
||||
|
|
@ -23,16 +22,15 @@ $loggerProvider = new LoggerProvider(
|
|||
),
|
||||
new InstrumentationScopeFactory(Attributes::factory())
|
||||
);
|
||||
$eventLoggerProvider = new EventLoggerProvider($loggerProvider);
|
||||
//get a logger, and emit a log record from an EventLogger.
|
||||
$eventLoggerOne = $eventLoggerProvider->getEventLogger('demo', '1.0');
|
||||
$eventLoggerTwo = $eventLoggerProvider->getEventLogger('demo', '2.0');
|
||||
//get a logger, and emit an event.
|
||||
$loggerOne = $loggerProvider->getLogger('demo', '1.0');
|
||||
$loggerTwo = $loggerProvider->getLogger('demo', '2.0');
|
||||
|
||||
$payload = ['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world'];
|
||||
|
||||
$eventLoggerOne->emit(name: 'foo', body: $payload, severityNumber: Severity::INFO);
|
||||
$eventLoggerOne->emit('bar', 'hello world');
|
||||
$eventLoggerTwo->emit(name: 'foo', body: $payload, severityNumber: Severity::INFO);
|
||||
$loggerOne->emit((new LogRecord($payload))->setEventName('foo')->setSeverityNumber(Severity::INFO));
|
||||
$loggerOne->emit((new LogRecord('hello world'))->setEventName('bar'));
|
||||
$loggerTwo->emit((new LogRecord($payload))->setEventName('foo')->setSeverityNumber(Severity::INFO));
|
||||
|
||||
//shut down logger provider
|
||||
$loggerProvider->shutdown();
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\SDK\Common\Attribute\Attributes;
|
||||
use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeFactory;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\Exporter\ConsoleExporterFactory;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\Processor\SimpleLogRecordProcessor;
|
||||
|
|
@ -26,7 +26,6 @@ $loggerProvider = new LoggerProvider(
|
|||
),
|
||||
new InstrumentationScopeFactory(Attributes::factory())
|
||||
);
|
||||
$eventLoggerProvider = new EventLoggerProvider($loggerProvider);
|
||||
$tracerProvider = new TracerProvider();
|
||||
$tracer = $tracerProvider->getTracer('demo-tracer');
|
||||
|
||||
|
|
@ -36,12 +35,12 @@ $scope = $span->activate();
|
|||
echo 'Trace id: ' . $span->getContext()->getTraceId() . PHP_EOL;
|
||||
echo 'Span id: ' . $span->getContext()->getSpanId() . PHP_EOL;
|
||||
|
||||
//get an event logger, and emit an event. The active context (trace id + span id) will be
|
||||
//get a logger, and emit an event. The active context (trace id + span id) will be
|
||||
//attached to the log record
|
||||
$eventLogger = $eventLoggerProvider->getEventLogger('demo', '1.0', 'http://schema.url', ['foo' => 'bar']);
|
||||
$logger = $loggerProvider->getLogger('demo', '1.0', 'http://schema.url', ['foo' => 'bar']);
|
||||
$payload = ['foo' => 'bar', 'baz' => 'bat', 'msg' => 'hello world'];
|
||||
|
||||
$eventLogger->emit(name: 'foo', body: $payload, severityNumber: Severity::INFO);
|
||||
$logger->emit((new LogRecord($payload))->setEventName('foo')->setSeverityNumber(Severity::INFO));
|
||||
|
||||
//end span
|
||||
$span->end();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\Example;
|
||||
|
||||
use OpenTelemetry\API\Instrumentation\CachedInstrumentation;
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
|
||||
putenv('OTEL_PHP_AUTOLOAD_ENABLED=true');
|
||||
putenv('OTEL_TRACES_EXPORTER=otlp/stdout');
|
||||
|
|
@ -17,7 +18,7 @@ $instrumentation = new CachedInstrumentation('demo');
|
|||
|
||||
$instrumentation->tracer()->spanBuilder('root')->startSpan()->end();
|
||||
$instrumentation->meter()->createCounter('cnt')->add(1);
|
||||
$instrumentation->eventLogger()->emit('foo', 'hello, otel');
|
||||
$instrumentation->logger()->emit(new LogRecord('foo'));
|
||||
|
||||
echo PHP_EOL . 'OTLP/stdout autoload example complete!';
|
||||
echo PHP_EOL;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ use Closure;
|
|||
use OpenTelemetry\API\Behavior\LogsMessagesTrait;
|
||||
use OpenTelemetry\API\Instrumentation\Configurator;
|
||||
use OpenTelemetry\API\Instrumentation\ContextKeys;
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\API\Metrics\MeterProviderInterface;
|
||||
use OpenTelemetry\API\Trace\TracerProviderInterface;
|
||||
|
|
@ -33,7 +32,6 @@ final class Globals
|
|||
private readonly TracerProviderInterface $tracerProvider,
|
||||
private readonly MeterProviderInterface $meterProvider,
|
||||
private readonly LoggerProviderInterface $loggerProvider,
|
||||
private readonly EventLoggerProviderInterface $eventLoggerProvider,
|
||||
private readonly TextMapPropagatorInterface $propagator,
|
||||
) {
|
||||
}
|
||||
|
|
@ -58,15 +56,6 @@ final class Globals
|
|||
return Context::getCurrent()->get(ContextKeys::loggerProvider()) ?? self::globals()->loggerProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @phan-suppress PhanDeprecatedFunction
|
||||
*/
|
||||
public static function eventLoggerProvider(): EventLoggerProviderInterface
|
||||
{
|
||||
return Context::getCurrent()->get(ContextKeys::eventLoggerProvider()) ?? self::globals()->eventLoggerProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Closure(Configurator): Configurator $initializer
|
||||
*
|
||||
|
|
@ -108,11 +97,10 @@ final class Globals
|
|||
$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));
|
||||
assert(isset($tracerProvider, $meterProvider, $loggerProvider, $propagator));
|
||||
|
||||
return self::$globals = new self($tracerProvider, $meterProvider, $loggerProvider, $eventLoggerProvider, $propagator);
|
||||
return self::$globals = new self($tracerProvider, $meterProvider, $loggerProvider, $propagator);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -5,8 +5,6 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\API\Instrumentation;
|
||||
|
||||
use OpenTelemetry\API\Globals;
|
||||
use OpenTelemetry\API\Logs\EventLoggerInterface;
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\API\Metrics\MeterInterface;
|
||||
|
|
@ -31,8 +29,6 @@ final class CachedInstrumentation
|
|||
private WeakMap $meters;
|
||||
/** @var WeakMap<LoggerProviderInterface, LoggerInterface> */
|
||||
private WeakMap $loggers;
|
||||
/** @var WeakMap<EventLoggerProviderInterface, EventLoggerInterface> */
|
||||
private WeakMap $eventLoggers;
|
||||
|
||||
/**
|
||||
* @psalm-suppress PropertyTypeCoercion
|
||||
|
|
@ -46,7 +42,6 @@ final class CachedInstrumentation
|
|||
$this->tracers = new \WeakMap();
|
||||
$this->meters = new \WeakMap();
|
||||
$this->loggers = new \WeakMap();
|
||||
$this->eventLoggers = new \WeakMap();
|
||||
}
|
||||
|
||||
public function tracer(): TracerInterface
|
||||
|
|
@ -68,15 +63,4 @@ final class CachedInstrumentation
|
|||
|
||||
return $this->loggers[$loggerProvider] ??= $loggerProvider->getLogger($this->name, $this->version, $this->schemaUrl, $this->attributes);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @phan-suppress PhanDeprecatedFunction
|
||||
*/
|
||||
public function eventLogger(): EventLoggerInterface
|
||||
{
|
||||
$eventLoggerProvider = Globals::eventLoggerProvider();
|
||||
|
||||
return $this->eventLoggers[$eventLoggerProvider] ??= $eventLoggerProvider->getEventLogger($this->name, $this->version, $this->schemaUrl, $this->attributes);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,7 @@ declare(strict_types=1);
|
|||
|
||||
namespace OpenTelemetry\API\Instrumentation;
|
||||
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\NoopEventLoggerProvider;
|
||||
use OpenTelemetry\API\Logs\NoopLoggerProvider;
|
||||
use OpenTelemetry\API\Metrics\MeterProviderInterface;
|
||||
use OpenTelemetry\API\Metrics\Noop\NoopMeterProvider;
|
||||
|
|
@ -30,7 +28,6 @@ final class Configurator implements ImplicitContextKeyedInterface
|
|||
private ?MeterProviderInterface $meterProvider = null;
|
||||
private ?TextMapPropagatorInterface $propagator = null;
|
||||
private ?LoggerProviderInterface $loggerProvider = null;
|
||||
private ?EventLoggerProviderInterface $eventLoggerProvider = null;
|
||||
|
||||
private function __construct()
|
||||
{
|
||||
|
|
@ -55,7 +52,6 @@ final class Configurator implements ImplicitContextKeyedInterface
|
|||
->withMeterProvider(new NoopMeterProvider())
|
||||
->withPropagator(new NoopTextMapPropagator())
|
||||
->withLoggerProvider(NoopLoggerProvider::getInstance())
|
||||
->withEventLoggerProvider(new NoopEventLoggerProvider())
|
||||
;
|
||||
}
|
||||
|
||||
|
|
@ -83,9 +79,6 @@ final class Configurator implements ImplicitContextKeyedInterface
|
|||
if ($this->loggerProvider !== null) {
|
||||
$context = $context->with(ContextKeys::loggerProvider(), $this->loggerProvider);
|
||||
}
|
||||
if ($this->eventLoggerProvider !== null) {
|
||||
$context = $context->with(ContextKeys::eventLoggerProvider(), $this->eventLoggerProvider);
|
||||
}
|
||||
|
||||
return $context;
|
||||
}
|
||||
|
|
@ -121,15 +114,4 @@ final class Configurator implements ImplicitContextKeyedInterface
|
|||
|
||||
return $self;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
public function withEventLoggerProvider(?EventLoggerProviderInterface $eventLoggerProvider): Configurator
|
||||
{
|
||||
$self = clone $this;
|
||||
$self->eventLoggerProvider = $eventLoggerProvider;
|
||||
|
||||
return $self;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace OpenTelemetry\API\Instrumentation;
|
||||
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\API\Metrics\MeterProviderInterface;
|
||||
use OpenTelemetry\API\Trace\TracerProviderInterface;
|
||||
|
|
@ -56,15 +55,4 @@ final class ContextKeys
|
|||
|
||||
return $instance ??= Context::createKey(LoggerProviderInterface::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @return ContextKeyInterface<EventLoggerProviderInterface>
|
||||
*/
|
||||
public static function eventLoggerProvider(): ContextKeyInterface
|
||||
{
|
||||
static $instance;
|
||||
|
||||
return $instance ??= Context::createKey(EventLoggerProviderInterface::class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\API\Logs;
|
||||
|
||||
use OpenTelemetry\Context\ContextInterface;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/event-api.md#events-api-interface
|
||||
*/
|
||||
interface EventLoggerInterface
|
||||
{
|
||||
public function emit(
|
||||
string $name,
|
||||
mixed $body = null,
|
||||
?int $timestamp = null,
|
||||
?ContextInterface $context = null,
|
||||
?Severity $severityNumber = null,
|
||||
iterable $attributes = [],
|
||||
): void;
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\API\Logs;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/v1.32.0/specification/logs/event-api.md#get-an-eventlogger
|
||||
*/
|
||||
interface EventLoggerProviderInterface
|
||||
{
|
||||
public function getEventLogger(
|
||||
string $name,
|
||||
?string $version = null,
|
||||
?string $schemaUrl = null,
|
||||
iterable $attributes = [],
|
||||
): EventLoggerInterface;
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\API\Logs;
|
||||
|
||||
use OpenTelemetry\Context\ContextInterface;
|
||||
|
||||
/**
|
||||
* @phan-suppress PhanDeprecatedInterface
|
||||
*/
|
||||
class NoopEventLogger implements EventLoggerInterface
|
||||
{
|
||||
public static function instance(): self
|
||||
{
|
||||
static $instance;
|
||||
$instance ??= new self();
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
public function emit(string $name, mixed $body = null, ?int $timestamp = null, ?ContextInterface $context = null, Severity|int|null $severityNumber = null, iterable $attributes = []): void
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\API\Logs;
|
||||
|
||||
/**
|
||||
* @phan-suppress PhanDeprecatedInterface
|
||||
*/
|
||||
class NoopEventLoggerProvider implements EventLoggerProviderInterface
|
||||
{
|
||||
public static function getInstance(): self
|
||||
{
|
||||
static $instance;
|
||||
|
||||
return $instance ??= new self();
|
||||
}
|
||||
|
||||
public function getEventLogger(
|
||||
string $name,
|
||||
?string $version = null,
|
||||
?string $schemaUrl = null,
|
||||
iterable $attributes = [],
|
||||
): EventLoggerInterface {
|
||||
return NoopEventLogger::instance();
|
||||
}
|
||||
}
|
||||
|
|
@ -17,7 +17,6 @@ use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
|
|||
use OpenTelemetry\SDK\Common\Attribute\Attributes;
|
||||
use OpenTelemetry\SDK\Common\Instrumentation\InstrumentationScopeFactory;
|
||||
use OpenTelemetry\SDK\Common\InstrumentationScope\Configurator;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LoggerConfig;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LogRecordProcessorInterface;
|
||||
|
|
@ -369,14 +368,12 @@ final class OpenTelemetrySdk implements ComponentProvider
|
|||
resource: $resource,
|
||||
configurator: $configurator,
|
||||
);
|
||||
$eventLoggerProvider = new EventLoggerProvider($loggerProvider);
|
||||
|
||||
// </editor-fold>
|
||||
|
||||
$sdkBuilder->setTracerProvider($tracerProvider);
|
||||
$sdkBuilder->setMeterProvider($meterProvider);
|
||||
$sdkBuilder->setLoggerProvider($loggerProvider);
|
||||
$sdkBuilder->setEventLoggerProvider($eventLoggerProvider);
|
||||
|
||||
return $sdkBuilder;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,6 +78,10 @@ class LogsConverter
|
|||
private function convertLogRecord(ReadableLogRecord $record): LogRecord
|
||||
{
|
||||
$pLogRecord = new LogRecord();
|
||||
$eventName = $record->getEventName();
|
||||
if ($eventName !== null) {
|
||||
$pLogRecord->setEventName($eventName);
|
||||
}
|
||||
$pLogRecord->setBody(AttributesConverter::convertAnyValue($record->getBody()));
|
||||
$pLogRecord->setTimeUnixNano($record->getTimestamp() ?? 0);
|
||||
$pLogRecord->setObservedTimeUnixNano($record->getObservedTimestamp() ?? 0);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"require": {
|
||||
"php": "^8.2",
|
||||
"php-http/discovery": "^1.14",
|
||||
"open-telemetry/gen-otlp-protobuf": "^1.1",
|
||||
"open-telemetry/gen-otlp-protobuf": "^1.5",
|
||||
"open-telemetry/api": "^1.0|^2.0",
|
||||
"open-telemetry/sdk": "^1.0|^2.0",
|
||||
"tbachert/spi": "^1.0.1"
|
||||
|
|
|
|||
|
|
@ -1,52 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Common\Time\ClockInterface;
|
||||
use OpenTelemetry\API\Logs\EventLoggerInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerInterface;
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\Context\Context;
|
||||
use OpenTelemetry\Context\ContextInterface;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* @phan-suppress PhanDeprecatedInterface
|
||||
*/
|
||||
class EventLogger implements EventLoggerInterface
|
||||
{
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
public function __construct(
|
||||
private readonly LoggerInterface $logger,
|
||||
private readonly ClockInterface $clock,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/v1.32.0/specification/logs/event-sdk.md#emit-event
|
||||
*/
|
||||
public function emit(
|
||||
string $name,
|
||||
mixed $body = null,
|
||||
?int $timestamp = null,
|
||||
?ContextInterface $context = null,
|
||||
?Severity $severityNumber = null,
|
||||
iterable $attributes = [],
|
||||
): void {
|
||||
$logRecord = new LogRecord();
|
||||
$logRecord->setAttribute('event.name', $name);
|
||||
$logRecord->setAttributes($attributes);
|
||||
$logRecord->setAttribute('event.name', $name);
|
||||
$logRecord->setBody($body);
|
||||
$logRecord->setTimestamp($timestamp ?? $this->clock->now());
|
||||
$logRecord->setContext($context ?? Context::getCurrent());
|
||||
$logRecord->setSeverityNumber($severityNumber ?? Severity::INFO);
|
||||
|
||||
$this->logger->emit($logRecord);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Common\Time\Clock;
|
||||
use OpenTelemetry\API\Logs\EventLoggerInterface;
|
||||
|
||||
/**
|
||||
* @phan-suppress PhanDeprecatedInterface
|
||||
*/
|
||||
class EventLoggerProvider implements EventLoggerProviderInterface
|
||||
{
|
||||
public function __construct(private readonly LoggerProviderInterface $loggerProvider)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @phan-suppress PhanDeprecatedClass
|
||||
*/
|
||||
public function getEventLogger(string $name, ?string $version = null, ?string $schemaUrl = null, iterable $attributes = []): EventLoggerInterface
|
||||
{
|
||||
return new EventLogger(
|
||||
$this->loggerProvider->getLogger($name, $version, $schemaUrl, $attributes),
|
||||
Clock::getDefault(),
|
||||
);
|
||||
}
|
||||
|
||||
public function forceFlush(): bool
|
||||
{
|
||||
return $this->loggerProvider->forceFlush();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\SDK\Sdk;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
class EventLoggerProviderFactory
|
||||
{
|
||||
public function create(LoggerProviderInterface $loggerProvider): EventLoggerProviderInterface
|
||||
{
|
||||
if (Sdk::isDisabled()) {
|
||||
return NoopEventLoggerProvider::getInstance();
|
||||
}
|
||||
|
||||
return new EventLoggerProvider($loggerProvider);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Logs as API;
|
||||
|
||||
/**
|
||||
* @phan-suppress PhanDeprecatedInterface
|
||||
*/
|
||||
interface EventLoggerProviderInterface extends API\EventLoggerProviderInterface
|
||||
{
|
||||
public function forceFlush(): bool;
|
||||
}
|
||||
|
|
@ -68,6 +68,7 @@ class ConsoleExporter implements LogRecordExporterInterface
|
|||
'severity_number' => $record->getSeverityNumber(),
|
||||
'severity_text' => $record->getSeverityText(),
|
||||
'body' => $record->getBody(),
|
||||
'event_name' => $record->getEventName(),
|
||||
'trace_id' => $spanContext !== null ? $spanContext->getTraceId() : '',
|
||||
'span_id' => $spanContext !== null ? $spanContext->getSpanId() : '',
|
||||
'trace_flags' => $spanContext !== null ? $spanContext->getTraceFlags() : null,
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Logs as API;
|
||||
|
||||
/**
|
||||
* @phan-suppress PhanDeprecatedInterface
|
||||
*/
|
||||
class NoopEventLoggerProvider extends API\NoopEventLoggerProvider implements EventLoggerProviderInterface
|
||||
{
|
||||
public static function getInstance(): self
|
||||
{
|
||||
static $instance;
|
||||
|
||||
return $instance ??= new self();
|
||||
}
|
||||
|
||||
public function forceFlush(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace OpenTelemetry\SDK;
|
||||
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Metrics\MeterProviderInterface;
|
||||
use OpenTelemetry\API\Trace\TracerProviderInterface;
|
||||
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
|
||||
|
|
@ -20,7 +19,6 @@ class Sdk
|
|||
private readonly TracerProviderInterface $tracerProvider,
|
||||
private readonly MeterProviderInterface $meterProvider,
|
||||
private readonly LoggerProviderInterface $loggerProvider,
|
||||
private readonly EventLoggerProviderInterface $eventLoggerProvider,
|
||||
private readonly TextMapPropagatorInterface $propagator,
|
||||
) {
|
||||
}
|
||||
|
|
@ -60,14 +58,6 @@ class Sdk
|
|||
return $this->loggerProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
public function getEventLoggerProvider(): EventLoggerProviderInterface
|
||||
{
|
||||
return $this->eventLoggerProvider;
|
||||
}
|
||||
|
||||
public function getPropagator(): TextMapPropagatorInterface
|
||||
{
|
||||
return $this->propagator;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ use OpenTelemetry\SDK\Common\Configuration\EnvComponentLoaderRegistry;
|
|||
use OpenTelemetry\SDK\Common\Configuration\EnvResolver;
|
||||
use OpenTelemetry\SDK\Common\Configuration\Variables;
|
||||
use OpenTelemetry\SDK\Common\Util\ShutdownHandler;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProviderFactory;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProviderFactory;
|
||||
use OpenTelemetry\SDK\Metrics\MeterProviderFactory;
|
||||
use OpenTelemetry\SDK\Propagation\LateBindingTextMapPropagator;
|
||||
|
|
@ -104,7 +103,6 @@ class SdkAutoloader
|
|||
->build();
|
||||
|
||||
$loggerProvider = (new LoggerProviderFactory())->create($emitMetrics ? $meterProvider : null, $resource);
|
||||
$eventLoggerProvider = (new EventLoggerProviderFactory())->create($loggerProvider);
|
||||
|
||||
ShutdownHandler::register($tracerProvider->shutdown(...));
|
||||
ShutdownHandler::register($meterProvider->shutdown(...));
|
||||
|
|
@ -114,7 +112,6 @@ class SdkAutoloader
|
|||
->withTracerProvider($tracerProvider)
|
||||
->withMeterProvider($meterProvider)
|
||||
->withLoggerProvider($loggerProvider)
|
||||
->withEventLoggerProvider($eventLoggerProvider)
|
||||
->withPropagator($propagator)
|
||||
;
|
||||
}
|
||||
|
|
@ -144,7 +141,6 @@ class SdkAutoloader
|
|||
->withMeterProvider($sdk->getMeterProvider())
|
||||
->withLoggerProvider($sdk->getLoggerProvider())
|
||||
->withPropagator($sdk->getPropagator())
|
||||
->withEventLoggerProvider($sdk->getEventLoggerProvider())
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,6 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\SDK;
|
||||
|
||||
use OpenTelemetry\API\Instrumentation\Configurator;
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\NoopEventLoggerProvider;
|
||||
use OpenTelemetry\Context\Context;
|
||||
use OpenTelemetry\Context\Propagation\NoopTextMapPropagator;
|
||||
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
|
||||
|
|
@ -24,7 +22,6 @@ class SdkBuilder
|
|||
private ?TracerProviderInterface $tracerProvider = null;
|
||||
private ?MeterProviderInterface $meterProvider = null;
|
||||
private ?LoggerProviderInterface $loggerProvider = null;
|
||||
private ?EventLoggerProviderInterface $eventLoggerProvider = null;
|
||||
private ?TextMapPropagatorInterface $propagator = null;
|
||||
private bool $autoShutdown = false;
|
||||
|
||||
|
|
@ -59,16 +56,6 @@ class SdkBuilder
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
public function setEventLoggerProvider(EventLoggerProviderInterface $eventLoggerProvider): self
|
||||
{
|
||||
$this->eventLoggerProvider = $eventLoggerProvider;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function setPropagator(TextMapPropagatorInterface $propagator): self
|
||||
{
|
||||
$this->propagator = $propagator;
|
||||
|
|
@ -81,7 +68,6 @@ class SdkBuilder
|
|||
$tracerProvider = $this->tracerProvider ?? new NoopTracerProvider();
|
||||
$meterProvider = $this->meterProvider ?? new NoopMeterProvider();
|
||||
$loggerProvider = $this->loggerProvider ?? new NoopLoggerProvider();
|
||||
$eventLoggerProvider = $this->eventLoggerProvider ?? new NoopEventLoggerProvider();
|
||||
if ($this->autoShutdown) {
|
||||
// rector rule disabled in config, because ShutdownHandler::register() does not keep a strong reference to $this
|
||||
ShutdownHandler::register($tracerProvider->shutdown(...));
|
||||
|
|
@ -93,7 +79,6 @@ class SdkBuilder
|
|||
$tracerProvider,
|
||||
$meterProvider,
|
||||
$loggerProvider,
|
||||
$eventLoggerProvider,
|
||||
$this->propagator ?? NoopTextMapPropagator::getInstance(),
|
||||
);
|
||||
}
|
||||
|
|
@ -109,7 +94,6 @@ class SdkBuilder
|
|||
->withTracerProvider($sdk->getTracerProvider())
|
||||
->withMeterProvider($sdk->getMeterProvider())
|
||||
->withLoggerProvider($sdk->getLoggerProvider())
|
||||
->withEventLoggerProvider($sdk->getEventLoggerProvider())
|
||||
->storeInContext();
|
||||
|
||||
return Context::storage()->attach($context);
|
||||
|
|
|
|||
|
|
@ -10,11 +10,8 @@ use OpenTelemetry\API\Globals;
|
|||
use OpenTelemetry\API\Instrumentation\CachedInstrumentation;
|
||||
use OpenTelemetry\API\Instrumentation\Configurator;
|
||||
use OpenTelemetry\API\Instrumentation\ContextKeys;
|
||||
use OpenTelemetry\API\Logs\EventLoggerInterface;
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerInterface;
|
||||
use OpenTelemetry\API\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\API\Logs\NoopEventLoggerProvider;
|
||||
use OpenTelemetry\API\Logs\NoopLoggerProvider;
|
||||
use OpenTelemetry\API\Metrics\MeterInterface;
|
||||
use OpenTelemetry\API\Metrics\MeterProviderInterface;
|
||||
|
|
@ -56,7 +53,6 @@ final class InstrumentationTest extends TestCase
|
|||
$this->assertInstanceOf(NoopMeterProvider::class, Globals::meterProvider());
|
||||
$this->assertInstanceOf(NoopTextMapPropagator::class, Globals::propagator());
|
||||
$this->assertInstanceOf(NoopLoggerProvider::class, Globals::loggerProvider());
|
||||
$this->assertInstanceOf(NoopEventLoggerProvider::class, Globals::eventLoggerProvider());
|
||||
}
|
||||
|
||||
public function test_globals_returns_configured_instances(): void
|
||||
|
|
@ -65,14 +61,12 @@ final class InstrumentationTest extends TestCase
|
|||
$meterProvider = $this->createMock(MeterProviderInterface::class);
|
||||
$propagator = $this->createMock(TextMapPropagatorInterface::class);
|
||||
$loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$eventLoggerProvider = $this->createMock(EventLoggerProviderInterface::class);
|
||||
|
||||
$scope = Configurator::create()
|
||||
->withTracerProvider($tracerProvider)
|
||||
->withMeterProvider($meterProvider)
|
||||
->withPropagator($propagator)
|
||||
->withLoggerProvider($loggerProvider)
|
||||
->withEventLoggerProvider($eventLoggerProvider)
|
||||
->activate();
|
||||
|
||||
try {
|
||||
|
|
@ -80,7 +74,6 @@ final class InstrumentationTest extends TestCase
|
|||
$this->assertSame($meterProvider, Globals::meterProvider());
|
||||
$this->assertSame($propagator, Globals::propagator());
|
||||
$this->assertSame($loggerProvider, Globals::loggerProvider());
|
||||
$this->assertSame($eventLoggerProvider, Globals::eventLoggerProvider());
|
||||
} finally {
|
||||
$scope->detach();
|
||||
}
|
||||
|
|
@ -107,16 +100,12 @@ final class InstrumentationTest extends TestCase
|
|||
$logger = $this->createMock(LoggerInterface::class);
|
||||
$loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$loggerProvider->method('getLogger')->willReturn($logger);
|
||||
$eventLogger = $this->createMock(EventLoggerInterface::class);
|
||||
$eventLoggerProvider = $this->createMock(EventLoggerProviderInterface::class);
|
||||
$eventLoggerProvider->method('getEventLogger')->willReturn($eventLogger);
|
||||
$propagator = $this->createMock(TextMapPropagatorInterface::class);
|
||||
|
||||
$scope = Configurator::create()
|
||||
->withTracerProvider($tracerProvider)
|
||||
->withMeterProvider($meterProvider)
|
||||
->withLoggerProvider($loggerProvider)
|
||||
->withEventLoggerProvider($eventLoggerProvider)
|
||||
->withPropagator($propagator)
|
||||
->activate();
|
||||
|
||||
|
|
@ -124,7 +113,6 @@ final class InstrumentationTest extends TestCase
|
|||
$this->assertSame($tracer, $instrumentation->tracer());
|
||||
$this->assertSame($meter, $instrumentation->meter());
|
||||
$this->assertSame($logger, $instrumentation->logger());
|
||||
$this->assertSame($eventLogger, $instrumentation->eventLogger());
|
||||
} finally {
|
||||
$scope->detach();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@ namespace OpenTelemetry\Tests\Unit\Contrib\Otlp;
|
|||
|
||||
use OpenTelemetry\API\Trace\SpanContext;
|
||||
use OpenTelemetry\API\Trace\SpanInterface;
|
||||
use OpenTelemetry\Context\Context;
|
||||
use OpenTelemetry\Context\ContextKeys;
|
||||
use OpenTelemetry\Contrib\Otlp\LogsConverter;
|
||||
use OpenTelemetry\SDK\Logs\ReadableLogRecord;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
|
|
@ -20,8 +18,7 @@ class LogsConverterTest extends TestCase
|
|||
private const TRACE_ID_BASE16 = 'ff000000000000000000000000000041';
|
||||
private const SPAN_ID_BASE16 = 'ff00000000000041';
|
||||
private const FLAGS = 12;
|
||||
/** @var ReadableLogRecord&MockObject $record */
|
||||
private $record;
|
||||
private ReadableLogRecord&MockObject $record;
|
||||
private LogsConverter $converter;
|
||||
|
||||
public function setUp(): void
|
||||
|
|
@ -34,17 +31,27 @@ class LogsConverterTest extends TestCase
|
|||
{
|
||||
$this->record->method('getBody')->willReturn('body');
|
||||
|
||||
$request = $this->converter->convert([$this->record]);
|
||||
$converted = $this->converter->convert([$this->record]);
|
||||
/** @psalm-suppress InvalidArgument */
|
||||
$row = $request->getResourceLogs()[0]->getScopeLogs()[0]->getLogRecords()[0];
|
||||
$this->assertSame('body', $row->getBody()->getStringValue());
|
||||
$logRecord = $converted->getResourceLogs()[0]->getScopeLogs()[0]->getLogRecords()[0];
|
||||
$this->assertSame('body', $logRecord->getBody()->getStringValue());
|
||||
}
|
||||
|
||||
public function test_convert_event_name(): void
|
||||
{
|
||||
$this->record->method('getEventName')->willReturn('my.event');
|
||||
|
||||
$converted = $this->converter->convert([$this->record]);
|
||||
/** @psalm-suppress InvalidArgument */
|
||||
$logRecord = $converted->getResourceLogs()[0]->getScopeLogs()[0]->getLogRecords()[0];
|
||||
|
||||
$this->assertSame('my.event', $logRecord->getEventName());
|
||||
}
|
||||
|
||||
public function test_convert_with_context(): void
|
||||
{
|
||||
$spanContext = SpanContext::create(self::TRACE_ID_BASE16, self::SPAN_ID_BASE16, self::FLAGS);
|
||||
$span = $this->createMock(SpanInterface::class);
|
||||
$context = Context::getCurrent()->with(ContextKeys::span(), $span);
|
||||
$span->method('getContext')->willReturn($spanContext);
|
||||
$this->record->method('getSpanContext')->willReturn($spanContext);
|
||||
$request = $this->converter->convert([$this->record]);
|
||||
|
|
|
|||
|
|
@ -1,48 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\Tests\Unit\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\SDK\Common\Configuration\Variables;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProviderFactory;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\SDK\Logs\NoopEventLoggerProvider;
|
||||
use OpenTelemetry\Tests\TestState;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
#[CoversClass(EventLoggerProviderFactory::class)]
|
||||
class EventLoggerProviderFactoryTest extends TestCase
|
||||
{
|
||||
use TestState;
|
||||
|
||||
/**
|
||||
* @psalm-suppress ArgumentTypeCoercion
|
||||
*/
|
||||
#[DataProvider('createProvider')]
|
||||
public function test_create(string $disabled, string $expected): void
|
||||
{
|
||||
$this->setEnvironmentVariable(Variables::OTEL_SDK_DISABLED, $disabled);
|
||||
$loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$factory = new EventLoggerProviderFactory();
|
||||
$eventLoggerProvider = $factory->create($loggerProvider);
|
||||
$this->assertInstanceOf($expected, $eventLoggerProvider);
|
||||
}
|
||||
|
||||
public static function createProvider(): array
|
||||
{
|
||||
return [
|
||||
'sdk disabled' => [
|
||||
'true',
|
||||
NoopEventLoggerProvider::class,
|
||||
],
|
||||
'sdk enabled' => [
|
||||
'false',
|
||||
EventLoggerProvider::class,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Unit\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Logs\LoggerInterface;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
#[CoversClass(EventLoggerProvider::class)]
|
||||
class EventLoggerProviderTest extends TestCase
|
||||
{
|
||||
private EventLoggerProvider $eventLoggerProvider;
|
||||
/** @var LoggerProviderInterface&MockObject $loggerProvider */
|
||||
private LoggerProviderInterface $loggerProvider;
|
||||
private LoggerInterface $logger;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
$this->eventLoggerProvider = new EventLoggerProvider($this->loggerProvider);
|
||||
}
|
||||
|
||||
public function test_emit(): void
|
||||
{
|
||||
$this->loggerProvider->expects($this->once())->method('getLogger')->willReturn($this->logger);
|
||||
|
||||
$this->eventLoggerProvider->getEventLogger('event.logger', '1.0', 'https://example.org/schema', ['foo' => 'foo']);
|
||||
}
|
||||
|
||||
public function test_force_flush(): void
|
||||
{
|
||||
$this->loggerProvider->expects($this->once())->method('forceFlush')->willReturn(true);
|
||||
|
||||
$this->eventLoggerProvider->forceFlush();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace OpenTelemetry\Tests\Unit\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\API\Common\Time\Clock;
|
||||
use OpenTelemetry\API\Common\Time\TestClock;
|
||||
use OpenTelemetry\API\Logs\LoggerInterface;
|
||||
use OpenTelemetry\API\Logs\LogRecord;
|
||||
use OpenTelemetry\API\Logs\Severity;
|
||||
use OpenTelemetry\Context\Context;
|
||||
use OpenTelemetry\SDK\Logs\EventLogger;
|
||||
use OpenTelemetry\SDK\Logs\EventLoggerProvider;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
#[CoversClass(EventLogger::class)]
|
||||
class EventLoggerTest extends TestCase
|
||||
{
|
||||
private LoggerInterface&MockObject $logger;
|
||||
private EventLoggerProvider $eventLoggerProvider;
|
||||
private TestClock $clock;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->clock = new TestClock();
|
||||
Clock::setDefault($this->clock);
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
$loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$loggerProvider->method('getLogger')->willReturn($this->logger);
|
||||
$this->eventLoggerProvider = new EventLoggerProvider($loggerProvider);
|
||||
}
|
||||
|
||||
public function test_emit(): void
|
||||
{
|
||||
$this->logger->expects($this->once())->method('emit')->with($this->callback(function (LogRecord $logRecord) {
|
||||
$expected = (new LogRecord('some.payload'))
|
||||
->setSeverityNumber(Severity::ERROR)
|
||||
->setTimestamp(123456)
|
||||
->setContext(Context::getCurrent())
|
||||
->setAttributes([
|
||||
'event.name' => 'my.event',
|
||||
'bar' => 'bar',
|
||||
]);
|
||||
$this->assertEquals($expected, $logRecord);
|
||||
|
||||
return true;
|
||||
}));
|
||||
|
||||
$eventLogger = $this->eventLoggerProvider->getEventLogger('event.logger', '1.0', 'https://example.org/schema', ['foo' => 'foo']);
|
||||
$eventLogger->emit('my.event', 'some.payload', 123456, severityNumber: Severity::ERROR, attributes: ['bar' => 'bar']);
|
||||
}
|
||||
|
||||
public function test_default_values(): void
|
||||
{
|
||||
$this->logger->expects($this->once())->method('emit')->with($this->callback(function (LogRecord $logRecord) {
|
||||
$expected = (new LogRecord())
|
||||
->setSeverityNumber(Severity::INFO)
|
||||
->setTimestamp($this->clock->now())
|
||||
->setContext(Context::getCurrent())
|
||||
->setAttributes([
|
||||
'event.name' => 'my.event',
|
||||
]);
|
||||
$this->assertEquals($expected, $logRecord);
|
||||
|
||||
return true;
|
||||
}));
|
||||
|
||||
$eventLogger = $this->eventLoggerProvider->getEventLogger('event.logger');
|
||||
$eventLogger->emit('my.event');
|
||||
}
|
||||
|
||||
/**
|
||||
* "The user provided Attributes MUST not take over the event.name attribute"
|
||||
* @see https://github.com/open-telemetry/opentelemetry-specification/blob/v1.32.0/specification/logs/event-sdk.md#emit-event
|
||||
*/
|
||||
public function test_event_name_attribute_is_ignored(): void
|
||||
{
|
||||
$this->logger->expects($this->once())->method('emit')->with($this->callback(function (LogRecord $logRecord) {
|
||||
$expected = (new LogRecord())
|
||||
->setSeverityNumber(Severity::INFO)
|
||||
->setTimestamp($this->clock->now())
|
||||
->setContext(Context::getCurrent())
|
||||
->setAttributes([
|
||||
'event.name' => 'my.event',
|
||||
]);
|
||||
$this->assertEquals($expected, $logRecord);
|
||||
|
||||
return true;
|
||||
}));
|
||||
|
||||
$eventLogger = $this->eventLoggerProvider->getEventLogger('event.logger');
|
||||
$eventLogger->emit('my.event', attributes: ['event.name' => 'not.my.event']);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Unit\SDK\Logs;
|
||||
|
||||
use OpenTelemetry\SDK\Logs\NoopEventLoggerProvider;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
#[CoversClass(NoopEventLoggerProvider::class)]
|
||||
class NoopEventLoggerProviderTest extends TestCase
|
||||
{
|
||||
public function test_get_instance(): void
|
||||
{
|
||||
$this->assertInstanceOf(NoopEventLoggerProvider::class, NoopEventLoggerProvider::getInstance());
|
||||
}
|
||||
|
||||
public function test_force_flush(): void
|
||||
{
|
||||
$this->assertTrue(NoopEventLoggerProvider::getInstance()->forceFlush());
|
||||
}
|
||||
}
|
||||
|
|
@ -7,7 +7,6 @@ namespace OpenTelemetry\Tests\Unit\SDK;
|
|||
use OpenTelemetry\API\Globals;
|
||||
use OpenTelemetry\API\Instrumentation\Configurator;
|
||||
use OpenTelemetry\API\LoggerHolder;
|
||||
use OpenTelemetry\API\Logs\NoopEventLoggerProvider;
|
||||
use OpenTelemetry\API\Logs\NoopLoggerProvider;
|
||||
use OpenTelemetry\API\Metrics\Noop\NoopMeterProvider;
|
||||
use OpenTelemetry\API\Trace\NoopTracerProvider;
|
||||
|
|
@ -70,7 +69,6 @@ class SdkAutoloaderTest extends TestCase
|
|||
$this->assertInstanceOf(NoopMeterProvider::class, Globals::meterProvider());
|
||||
$this->assertInstanceOf(NoopTracerProvider::class, Globals::tracerProvider());
|
||||
$this->assertInstanceOf(NoopLoggerProvider::class, Globals::loggerProvider());
|
||||
$this->assertInstanceOf(NoopEventLoggerProvider::class, Globals::eventLoggerProvider());
|
||||
$this->assertInstanceOf(NoopTextMapPropagator::class, Globals::propagator(), 'propagator not initialized by disabled autoloader');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ declare(strict_types=1);
|
|||
namespace OpenTelemetry\Tests\Unit\SDK;
|
||||
|
||||
use OpenTelemetry\API\Globals;
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
|
||||
use OpenTelemetry\SDK\Metrics\MeterProviderInterface;
|
||||
|
|
@ -21,7 +20,6 @@ class SdkBuilderTest extends TestCase
|
|||
private TracerProviderInterface $tracerProvider;
|
||||
private MeterProviderInterface $meterProvider;
|
||||
private LoggerProviderInterface $loggerProvider;
|
||||
private EventLoggerProviderInterface $eventLoggerProvider;
|
||||
private SdkBuilder $builder;
|
||||
|
||||
public function setUp(): void
|
||||
|
|
@ -30,11 +28,9 @@ class SdkBuilderTest extends TestCase
|
|||
$this->tracerProvider = $this->createMock(TracerProviderInterface::class);
|
||||
$this->meterProvider = $this->createMock(MeterProviderInterface::class);
|
||||
$this->loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$this->eventLoggerProvider = $this->createMock(EventLoggerProviderInterface::class);
|
||||
$this->builder = (new SdkBuilder())
|
||||
->setMeterProvider($this->meterProvider)
|
||||
->setLoggerProvider($this->loggerProvider)
|
||||
->setEventLoggerProvider($this->eventLoggerProvider)
|
||||
->setPropagator($this->propagator)
|
||||
->setTracerProvider($this->tracerProvider)
|
||||
->setAutoShutdown(true);
|
||||
|
|
@ -47,7 +43,6 @@ class SdkBuilderTest extends TestCase
|
|||
$this->assertSame($this->propagator, $sdk->getPropagator());
|
||||
$this->assertSame($this->tracerProvider, $sdk->getTracerProvider());
|
||||
$this->assertSame($this->loggerProvider, $sdk->getLoggerProvider());
|
||||
$this->assertSame($this->eventLoggerProvider, $sdk->getEventLoggerProvider());
|
||||
}
|
||||
|
||||
public function test_build_and_register_global(): void
|
||||
|
|
@ -57,7 +52,6 @@ class SdkBuilderTest extends TestCase
|
|||
$this->assertSame($this->propagator, Globals::propagator());
|
||||
$this->assertSame($this->tracerProvider, Globals::tracerProvider());
|
||||
$this->assertSame($this->loggerProvider, Globals::loggerProvider());
|
||||
$this->assertSame($this->eventLoggerProvider, Globals::eventLoggerProvider());
|
||||
$scope->detach();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace OpenTelemetry\Tests\Unit\SDK;
|
||||
|
||||
use OpenTelemetry\API\Logs\EventLoggerProviderInterface;
|
||||
use OpenTelemetry\Context\Propagation\TextMapPropagatorInterface;
|
||||
use OpenTelemetry\SDK\Common\Configuration\Variables;
|
||||
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
|
||||
|
|
@ -26,7 +25,6 @@ class SdkTest extends TestCase
|
|||
private MeterProviderInterface $meterProvider;
|
||||
private TracerProviderInterface $tracerProvider;
|
||||
private LoggerProviderInterface $loggerProvider;
|
||||
private EventLoggerProviderInterface $eventLoggerProvider;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
|
|
@ -34,7 +32,6 @@ class SdkTest extends TestCase
|
|||
$this->meterProvider = $this->createMock(MeterProviderInterface::class);
|
||||
$this->tracerProvider = $this->createMock(TracerProviderInterface::class);
|
||||
$this->loggerProvider = $this->createMock(LoggerProviderInterface::class);
|
||||
$this->eventLoggerProvider = $this->createMock(EventLoggerProviderInterface::class);
|
||||
}
|
||||
|
||||
public function tearDown(): void
|
||||
|
|
@ -90,11 +87,10 @@ class SdkTest extends TestCase
|
|||
|
||||
public function test_getters(): void
|
||||
{
|
||||
$sdk = new Sdk($this->tracerProvider, $this->meterProvider, $this->loggerProvider, $this->eventLoggerProvider, $this->propagator);
|
||||
$sdk = new Sdk($this->tracerProvider, $this->meterProvider, $this->loggerProvider, $this->propagator);
|
||||
$this->assertSame($this->propagator, $sdk->getPropagator());
|
||||
$this->assertSame($this->meterProvider, $sdk->getMeterProvider());
|
||||
$this->assertSame($this->tracerProvider, $sdk->getTracerProvider());
|
||||
$this->assertSame($this->loggerProvider, $sdk->getLoggerProvider());
|
||||
$this->assertSame($this->eventLoggerProvider, $sdk->getEventLoggerProvider());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue