Skip to content

Commit 243d965

Browse files
authored
adding otlp/file exporter (#1465)
the spec has added in-development otlp file/stdout exporter. We already supported this programmatically, so add some factories and sdk config to allow configuration from environment (only for stdout, per spec)
1 parent 9b6de12 commit 243d965

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed

StdoutLogsExporterFactory.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace OpenTelemetry\Contrib\Otlp;
6+
7+
use OpenTelemetry\SDK\Common\Export\Stream\StreamTransportFactory;
8+
use OpenTelemetry\SDK\Logs\LogRecordExporterFactoryInterface;
9+
use OpenTelemetry\SDK\Logs\LogRecordExporterInterface;
10+
11+
class StdoutLogsExporterFactory implements LogRecordExporterFactoryInterface
12+
{
13+
public function create(): LogRecordExporterInterface
14+
{
15+
$transport = (new StreamTransportFactory())->create('php://stdout', ContentTypes::NDJSON);
16+
17+
return new LogsExporter($transport);
18+
}
19+
}

StdoutMetricExporterFactory.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace OpenTelemetry\Contrib\Otlp;
6+
7+
use OpenTelemetry\SDK\Common\Export\Stream\StreamTransportFactory;
8+
use OpenTelemetry\SDK\Metrics\MetricExporterFactoryInterface;
9+
use OpenTelemetry\SDK\Metrics\MetricExporterInterface;
10+
11+
class StdoutMetricExporterFactory implements MetricExporterFactoryInterface
12+
{
13+
public function create(): MetricExporterInterface
14+
{
15+
$transport = (new StreamTransportFactory())->create('php://stdout', ContentTypes::NDJSON);
16+
17+
return new MetricExporter($transport);
18+
}
19+
}

StdoutSpanExporterFactory.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace OpenTelemetry\Contrib\Otlp;
6+
7+
use OpenTelemetry\SDK\Common\Export\Stream\StreamTransportFactory;
8+
use OpenTelemetry\SDK\Trace\SpanExporter\SpanExporterFactoryInterface;
9+
use OpenTelemetry\SDK\Trace\SpanExporterInterface;
10+
11+
class StdoutSpanExporterFactory implements SpanExporterFactoryInterface
12+
{
13+
public function create(): SpanExporterInterface
14+
{
15+
$transport = (new StreamTransportFactory())->create('php://stdout', ContentTypes::NDJSON);
16+
17+
return new SpanExporter($transport);
18+
}
19+
}

_register.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
declare(strict_types=1);
44
\OpenTelemetry\SDK\Registry::registerSpanExporterFactory('otlp', \OpenTelemetry\Contrib\Otlp\SpanExporterFactory::class);
5+
\OpenTelemetry\SDK\Registry::registerSpanExporterFactory('otlp/stdout', \OpenTelemetry\Contrib\Otlp\StdoutSpanExporterFactory::class);
6+
57
\OpenTelemetry\SDK\Registry::registerMetricExporterFactory('otlp', \OpenTelemetry\Contrib\Otlp\MetricExporterFactory::class);
8+
\OpenTelemetry\SDK\Registry::registerMetricExporterFactory('otlp/stdout', \OpenTelemetry\Contrib\Otlp\StdoutMetricExporterFactory::class);
69

710
\OpenTelemetry\SDK\Registry::registerTransportFactory('http', \OpenTelemetry\Contrib\Otlp\OtlpHttpTransportFactory::class);
811

912
\OpenTelemetry\SDK\Registry::registerLogRecordExporterFactory('otlp', \OpenTelemetry\Contrib\Otlp\LogsExporterFactory::class);
13+
\OpenTelemetry\SDK\Registry::registerLogRecordExporterFactory('otlp/stdout', \OpenTelemetry\Contrib\Otlp\StdoutLogsExporterFactory::class);

0 commit comments

Comments
 (0)