Skip to content

Commit 73ff5ad

Browse files
authored
refactor sdk/api logging (#1105)
send errors/warnings/etc by default through PHP's error_log. This gives more control to administrators, since error_log can be configured to write to any stream (file, stderr, etc). I think it's also less surprising for people trying out otel (particularly with development PHP settings, where trigger_error often breaks an application). Adding a configuration value to control where logs go: OTEL_PHP_LOG_DESTINATION.
1 parent 197a7a4 commit 73ff5ad

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+514
-253
lines changed

examples/global_providers.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use OpenTelemetry\API\Globals;
6+
use OpenTelemetry\API\Instrumentation\Configurator;
7+
use OpenTelemetry\SDK\Trace\SpanExporter\ConsoleSpanExporterFactory;
8+
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
9+
use OpenTelemetry\SDK\Trace\TracerProvider;
10+
11+
require __DIR__ . '/../vendor/autoload.php';
12+
13+
/**
14+
* Example of globally registering <Signal>Provider instances.
15+
* Generally this is hidden inside the SDK builder or SDK autoloading,
16+
* but you can also do it manually. The providers are stored in
17+
* context, and reset to previous values or defaults when the
18+
* scope is detached.
19+
*/
20+
21+
//before, a no-op provider is provided by default
22+
echo 'Before: ' . get_class(Globals::tracerProvider()) . PHP_EOL;
23+
24+
$tracerProvider = TracerProvider::builder()->addSpanProcessor(
25+
new SimpleSpanProcessor(
26+
(new ConsoleSpanExporterFactory())->create()
27+
)
28+
)->build();
29+
30+
$configurator = Configurator::create()
31+
->withTracerProvider($tracerProvider);
32+
33+
$scope = $configurator->activate();
34+
//activated, now our $tracerProvider is globally available
35+
echo 'During: ' . get_class(Globals::tracerProvider()) . PHP_EOL;
36+
37+
$scope->detach();
38+
39+
//after scope detached, back to default no-op providers:
40+
echo 'After: ' . get_class(Globals::tracerProvider()) . PHP_EOL;

examples/logs/exporters/otlp_grpc.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44

55
namespace OpenTelemetry\Example;
66

7-
use Monolog\Handler\StreamHandler;
8-
use Monolog\Logger;
9-
use OpenTelemetry\API\LoggerHolder;
107
use OpenTelemetry\API\Logs\EventLogger;
118
use OpenTelemetry\API\Logs\LogRecord;
129
use OpenTelemetry\API\Signals;
@@ -19,14 +16,9 @@
1916
use OpenTelemetry\SDK\Logs\LoggerProvider;
2017
use OpenTelemetry\SDK\Logs\LogRecordLimitsBuilder;
2118
use OpenTelemetry\SDK\Logs\Processor\BatchLogRecordProcessor;
22-
use Psr\Log\LogLevel;
2319

2420
require __DIR__ . '/../../../vendor/autoload.php';
2521

26-
LoggerHolder::set(
27-
new Logger('otel-php', [new StreamHandler(STDOUT, LogLevel::DEBUG)])
28-
);
29-
3022
$transport = (new GrpcTransportFactory())->create('http://collector:4317' . OtlpUtil::method(Signals::LOGS));
3123
$exporter = new LogsExporter($transport);
3224
$loggerProvider = new LoggerProvider(

examples/logs/exporters/otlp_http.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44

55
namespace OpenTelemetry\Example;
66

7-
use Monolog\Handler\StreamHandler;
8-
use Monolog\Logger;
9-
use OpenTelemetry\API\LoggerHolder;
107
use OpenTelemetry\API\Logs\EventLogger;
118
use OpenTelemetry\API\Logs\LogRecord;
129
use OpenTelemetry\Contrib\Otlp\LogsExporter;
@@ -16,14 +13,9 @@
1613
use OpenTelemetry\SDK\Logs\LoggerProvider;
1714
use OpenTelemetry\SDK\Logs\LogRecordLimitsBuilder;
1815
use OpenTelemetry\SDK\Logs\Processor\SimpleLogRecordProcessor;
19-
use Psr\Log\LogLevel;
2016

2117
require __DIR__ . '/../../../vendor/autoload.php';
2218

23-
LoggerHolder::set(
24-
new Logger('otel-php', [new StreamHandler(STDOUT, LogLevel::DEBUG)])
25-
);
26-
2719
$transport = (new OtlpHttpTransportFactory())->create('http://collector:4318/v1/logs', 'application/json');
2820
$exporter = new LogsExporter($transport);
2921

examples/metrics/exporters/otlp_grpc.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
use OpenTelemetry\SDK\Common\Time\ClockFactory;
1414
use OpenTelemetry\SDK\Metrics\MetricReader\ExportingReader;
1515

16-
\OpenTelemetry\API\LoggerHolder::set(new \Monolog\Logger('grpc', [new \Monolog\Handler\StreamHandler('php://stderr')]));
17-
1816
$clock = ClockFactory::getDefault();
1917

2018
$reader = new ExportingReader(

examples/sdk_builder.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
declare(strict_types=1);
44

5-
use Monolog\Handler\StreamHandler;
6-
use Monolog\Logger;
75
use OpenTelemetry\API\Instrumentation\CachedInstrumentation;
8-
use OpenTelemetry\API\LoggerHolder;
96
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
107
use OpenTelemetry\Contrib\Otlp\MetricExporter;
118
use OpenTelemetry\SDK\Common\Export\Http\PsrTransportFactory;
@@ -25,8 +22,6 @@
2522

2623
echo 'Starting SDK builder example' . PHP_EOL;
2724

28-
LoggerHolder::set(new Logger('grpc', [new StreamHandler('php://stderr')]));
29-
3025
$resource = ResourceInfoFactory::defaultResource();
3126
$spanExporter = new InMemoryExporter();
3227
$logRecordExporter = new \OpenTelemetry\SDK\Logs\Exporter\InMemoryExporter();

examples/traces/exporters/otlp_file.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,13 @@
66

77
require __DIR__ . '/../../../vendor/autoload.php';
88

9-
use Monolog\Handler\StreamHandler;
10-
use Monolog\Logger;
11-
use OpenTelemetry\API\LoggerHolder;
129
use OpenTelemetry\Contrib\Otlp\ContentTypes;
1310
use OpenTelemetry\Contrib\Otlp\SpanExporter;
1411
use OpenTelemetry\SDK\Common\Export\Stream\StreamTransportFactory;
1512
use OpenTelemetry\SDK\Common\Time\ClockFactory;
1613
use OpenTelemetry\SDK\Trace\SpanProcessor\BatchSpanProcessor;
1714
use OpenTelemetry\SDK\Trace\TracerProvider;
1815

19-
LoggerHolder::set(new Logger('otlp-example', [new StreamHandler('php://stderr')]));
20-
2116
$filename = sys_get_temp_dir() . '/traces.jsonl';
2217
$file = fopen($filename, 'a');
2318
$transport = (new StreamTransportFactory())->create($file, ContentTypes::NDJSON);

examples/traces/exporters/otlp_grpc.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
1414
use OpenTelemetry\SDK\Trace\TracerProvider;
1515

16-
\OpenTelemetry\API\LoggerHolder::set(new \Monolog\Logger('grpc', [new \Monolog\Handler\StreamHandler('php://stderr')]));
17-
1816
$transport = (new GrpcTransportFactory())->create('http://collector:4317' . OtlpUtil::method(Signals::TRACE));
1917
$exporter = new SpanExporter($transport);
2018
echo 'Starting OTLP GRPC example';

examples/traces/exporters/otlp_grpc_from_factory.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
require __DIR__ . '/../../../vendor/autoload.php';
1010

11-
\OpenTelemetry\API\LoggerHolder::set(new \Monolog\Logger('grpc', [new \Monolog\Handler\StreamHandler('php://stderr')]));
12-
1311
/**
1412
* Create an otlp+grpc tracer provider from TracerProviderFactory, using environment variables as input
1513
*/

examples/traces/exporters/otlp_http.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,11 @@
66

77
require __DIR__ . '/../../../vendor/autoload.php';
88

9-
use Monolog\Handler\StreamHandler;
10-
use Monolog\Logger;
11-
use OpenTelemetry\API\LoggerHolder;
129
use OpenTelemetry\Contrib\Otlp\OtlpHttpTransportFactory;
1310
use OpenTelemetry\Contrib\Otlp\SpanExporter;
1411
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
1512
use OpenTelemetry\SDK\Trace\TracerProvider;
1613

17-
LoggerHolder::set(new Logger('otlp-example', [new StreamHandler('php://stderr')]));
18-
1914
$transport = (new OtlpHttpTransportFactory())->create('http://collector:4318/v1/traces', 'application/x-protobuf');
2015
$exporter = new SpanExporter($transport);
2116

examples/traces/exporters/otlp_http_from_factory.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
require __DIR__ . '/../../../vendor/autoload.php';
88

9-
\OpenTelemetry\API\LoggerHolder::set(new \Monolog\Logger('grpc', [new \Monolog\Handler\StreamHandler('php://stderr')]));
10-
119
/**
1210
* Create an otlp+http/protobuf tracer provider from TracerProviderFactory, using environment variables as input
1311
*/

0 commit comments

Comments
 (0)