This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.
A monolog handler for OpenTelemetry. See https://opentelemetry.io/docs/instrumentation/php/manual/#logs for further documentation.
This package depends on the OpenTelemetry API, but a configured OpenTelemetry SDK should also be provided.
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
Logs must be emitted to a receiver/system that understands the OpenTelemetry protocol, such as the OpenTelemetry collector.
composer require open-telemetry/opentelemetry-logger-monolog
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).
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,
);
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.
Finally, add the handler to a Monolog logger:
$logger = new \Monolog\Logger(
'name',
[$handler],
);
$logger->info('hello world');