open-telemetry/opentelemetry-auto-psr3

OpenTelemetry auto-instrumentation for PSR-3 (Logger Interface).

0.0.8 2024-10-02 12:41 UTC

This package is auto-updated.

Last update: 2024-10-24 02:16:50 UTC


README

Releases Issues Source Mirror Latest Version Stable

This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.

OpenTelemetry PSR-3 auto-instrumentation

Please read https://opentelemetry.io/docs/instrumentation/php/automatic/ for instructions on how to install and configure the extension and SDK.

Overview

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

Mode

The package can operate in two modes, controlled by the environment variable OTEL_PHP_PSR3_MODE:

inject

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}');

export

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');

Configuration

The extension can be disabled via runtime configuration:

OTEL_PHP_DISABLED_INSTRUMENTATIONS=psr3