open-telemetry / opentelemetry-logger-monolog
OpenTelemetry Monolog handler.
Requires
- monolog/monolog: ^1.1|^2|^3
- open-telemetry/api: ^1.0.0beta16
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3
- google/protobuf: >=3.5.0
- guzzlehttp/guzzle: ^7.4
- nyholm/psr7: ^1.6
- open-telemetry/exporter-otlp: >=1.0.0beta6
- open-telemetry/sdk: >=1.0.0beta7
- phan/phan: ^5.0
- phpbench/phpbench: ^1.2
- phpstan/phpstan: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.16
- vimeo/psalm: ^4.0
README
This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.
OpenTelemetry Monolog handler
A monolog handler for OpenTelemetry. See https://opentelemetry.io/docs/instrumentation/php/manual/#logs for further documentation.
Requirements
API + SDK
This package depends on the OpenTelemetry API, but a configured OpenTelemetry SDK should also be provided.
Exporter
Usually logs are exported to a receiver
via the otlp
protocol in the protobuf
format, via http or gRPC
.
This requires:
- a
protobuf
implementation; either the protobuf extension or thegoogle/protobuf
package - the
open-telemetry/exporter-otlp
package - the
open-telemetry/transport-grpc
package, if using gRPC transport - a PSR-7 and PSR-18 implementation, if using HTTP transport
Receiver
Logs must be emitted to a receiver/system that understands the OpenTelemetry protocol, such as the OpenTelemetry collector.
Installation
composer require open-telemetry/opentelemetry-logger-monolog
Usage
The OpenTelemetry handler, configured with an OpenTelemetry LoggerProvider
, is used to send Monolog LogRecord
s to OpenTelemetry.
The LoggerProvider
can be configured in a number of ways: manually, via an SDK Builder, or automatically (using environment/php.ini variables).
Manual configuration
Set up an SDK LoggerProvider and pass it to the handler:
$loggerProvider = new \OpenTelemetry\SDK\Logs\LoggerProvider(/* params */); $handler = new \OpenTelemetry\Contrib\Logs\Monolog\Handler( $loggerProvider, 'info', true, );
Automatic configuration
If you use OpenTelemetry SDK autoloading, you can retrieve the global logger provider. That may be a no-op implementation if there was any misconfiguration.
See autoload-sdk example for how to use autoloading with the OpenTelemetry SDK.
Create a Logger
Finally, add the handler to a Monolog logger:
$logger = new \Monolog\Logger( 'name', [$handler], ); $logger->info('hello world');