This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.
Please read https://opentelemetry.io/docs/instrumentation/php/automatic/ for instructions on how to install and configure the extension and SDK.
Auto-instrumentation hooks are registered via composer, and depending on the mode, will:
- automatically inject trace id and span id into log message context of any psr3 logger; or
- transform the message into the OpenTelemetry LogRecord format, for export to an OpenTelemetry logging-compatible backend
The package can operate in two modes, controlled by the environment variable OTEL_PHP_PSR3_MODE
:
Inject traceId
and spanId
of the active trace span into the context of each logged message. Depending on the PSR-3 implementation,
the values may be written to the log output, or may be available for interpolation into the log message.
For example:
putenv('OTEL_PHP_PSR3_MODE=inject');
require 'vendor/autoload.php';
$logger = /* create logger */
$logger->info('traceId={traceId} spanId={spanId}');
The logged output will be processed and emitted by the logger as normal, but the output will also be encoded using the OpenTelemetry log model and can be exported to an OpenTelemetry-compatible backend.
putenv('OTEL_PHP_PSR3_MODE=export');
putenv('OTEL_PHP_AUTOLOAD_ENABLED=true');
putenv('OTEL_LOGS_EXPORTER=console');
require 'vendor/autoload.php';
$logger = /* create logger */
$logger->info('Hello, OTEL');
The extension can be disabled via runtime configuration:
OTEL_PHP_DISABLED_INSTRUMENTATIONS=psr3